Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu tenho vários botões da classe "b3". Um desses tem id="bt1" e display="block". Também tenho vários botões da classe "b4". Um desse tem id="bt2" e display="none"
Quando clico em algum dos "b3", o display deles todos fica "none" e o display de todos os "b4" fica "block" //parei a implementação aki...
Mas eu preciso que pra cada combinação "b3" + "b4" ocorra um função diferente baseado no id dos botões deles. Por exemplo, teria um função específica e única para a combinação "bt1" + "bt2"
A classe "b3" tem 10 botões e a "b4" tem 6. Eu, teoricamente, preciso fazer 60 funções, e, mesmo assim, nem sei o que por nessa funções!!! Preciso unir dois .clicks para executar cada uma das 60 funções
E, além disso, tem uma forma de não serem necessárias 60 funções (com possíveis 60 ifs)?
Desde já obrigado a todos.
Obrigado. Na verdade é para movimentar a peça de um jogo:
Os primeiros dez botões, classe "b3", representam 10 casas de um tabuleiro.
Os outros seis botões, classe "b4", representam cada um uma peça do jogo.
Eu preciso que o usuário escolha uma peça e uma nova posição pra essa peça se movimentar.
Aí depois eu verifico se essa nova posição está "vazia" (essa parte está tranquila) para poder mover a peça ou se ela está "ocupada", fazendo a peça mais fraca morrer. Mas essa parte está andando.
O problema é associar a escolha da peça com a escolha da nova posição.
Os dois cliques que você precisa seria:
1 click -> escolher o primeiro botão.
2 click -> definir um alvo pra interação
?
Se for, porque você acrescentar uma identificação pra posição na peça escolhida, e após apontar o alvo, verificar o que existe nessa peça alvo pra executar a ação, assim você só trataria das peças que interfeririam no momento.
Mas o problema está justamente em fazer essa associação entre peça escolhida e sua (possível) nova posição.
Meio que desisti desta ideia. Tô tentando através de outra abordagem:
Cada 1 dos 25 terrenos que compõem o tabuleiro tem como id um número:
1 2 3 4 5
6 7 8 9 10
11 12 13 1 4 15
16 17 18 19 20
21 22 23 24 25
Esse é meu tabuleiro. Cada número representa um terreno e, ao mesmo tempo, é o seu id.
Então minha "estratégia" para implementar a movimentação é:
Pra frente: -5 terrenos.
Pra trás: +5 terrenos.
Pra direita: +1 terreno.
Pra esquerda: -1 terreno.
Para a implementação (do movimento para frente), estou usando:
$("#'.$this->nome_peca.'").appendTo("#" + String(parseInt($("#'.$this->nome_peca.'").parent().attr("id")) - 5));
O parent de $("#'.$this->nome_peca.'") é a div atual da peça. E eu me movo (usando o appendTo) para esse valor -5.
Até aí tudo bem. Mas aí entra a questão de o terreno para o qual quero me mover estar ocupado. Verifico assim:
if (document.getElementById(String(parseInt($("#'.$this->nome_peca.'").parent().attr("id") - 5))).children.length <= 0)
As divs vazias não têm filhos (logo, =0). As ocupadas têm um filho (logo, não conseguiria me mover até elas, em teoria).
Juntando tudo, essa é a validação e a execução do movimento pra frente:
function mvPeca_frente() {
echo'<script>
if(document.getElementById(String(parseInt($("#'.$this->nome_peca.'").parent().attr("id")- 5))).children.length< 1)
{
$("#'.$this->nome_peca.'").click(function()
{
$("#'.$this->nome_peca.'").appendTo("#" + String(parseInt($("#'.$this->nome_peca.'").parent().attr("id"))- 5));
});
}
</script>'; }
Porém, não está funcionando. Eu "invado" casas ocupadas.PS.: Começo a envolver PHP no código. Mas acho que a interferência é mínima e não é necessário mudar a categoria da pergunta.
Eu deveria criar um novo tópico exclusivo para essa nova abordagem?
Consegui!!! O brigado pela ajuda. Só precisei trocar o .click e o if de posição.
function mvPeca_frente()
{
echo'<script>
$("#'.$this->nome_peca.'").click(function()
{
if(document.getElementById(String(parseInt($("#'.$this->nome_peca.'").parent().attr("id")- 5))).children.length< 1) {
$("#'.$this->nome_peca.'").appendTo("#" + String(parseInt($("#'.$this->nome_peca.'").parent().attr("id"))- 5));
}
});
</script>';
}
Cara, para não ter esses IFs precisaria verificar a necessidade da sua funcao
Por exemplo, se fosse para somar os números, aí você teria 10 botões b3 (de 0 à 9) e 10 botões b4 (tb de 0 à 9), quando clicar em um b3 ele colocaria o valor em uma variável e faria o resto(ocultar os b3 e exibir os b4), quando clicar no b4 colocaria o valor em outra variável e chamaria uma única função, que somaria as 2 variáveis.
Como falei, depende da sua necessidade, nesse meu exemplo é um caso simples de soma, na verdade precisaria analisa o que você deseja fazer porque cada necessidade vai exigir soluções diferentes.