Pergunta

I tem um elemento select forma que, quando um certo valor é seleccionada, vai activar dois outros elementos da página (um dt / par dd).

O evento é acionado corretamente, mas eu não posso obter os elementos para alternar - nota que eu estou usando seletores de classe porque o número desses elementos "sets" na página é variável. Aqui está o meu código:

$(".lender_id").change(function () {
if($(this).val()=='45')
   {
   $(this).next(".lender_other1").toggle();
   $(this).next(".lender_other2").toggle();
   }
});

lender_id é a minha selecione classe de elemento, o código html da seguinte forma (como indicado este elemento conjunto pode aparecer várias vezes na página):

<dt>Lender</dt>
<dd><select name="lender_id[1]" class="lender_id">
<option value="1">Value</option>
<option value="45">Special Value</option>
</select></dd>

<dt class="lender_other1" style="display:none;">Lender Name</dt>
<dd class="lender_other2" style="display:none;">
<input type="text" name="lender_other[1]" value="" /></dd>

<dt>Lender</dt>
<dd><select name="lender_id[2]" class="lender_id">
<option value="1">Value</option>
<option value="45">Special Value</option>
</select></dd>

<dt class="lender_other1" style="display:none;">Lender Name</dt>
<dd class="lender_other2" style="display:none;">
<input type="text" name="lender_other[2]" value="" /></dd>

etc...
Foi útil?

Solução

aqui é o que você quer:

$(".lender_id").change(function() {
    if ($(this).val() == '45') {
        $(this).parent().nextAll(".lender_other1:first, .lender_other2:first").toggle();
    };
});

Editar

Eu combinei os seletores de classe juntos para torná-lo mais eficiente.

Outras dicas

next() não faz o que você acha que ele faz. Tente $(this).parent('dl').find('.lender_other1'). Ou, você sabe, talvez apenas $('.lender_other1').

.next () retorna apenas o próximo jogo, então eu acho que você deve estar usando .nextAll ()

http://docs.jquery.com/Traversing/nextAll#expr

fatia (início, fim) Método . esta é a maneira correta de acordo com um vídeo de John Resig.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top