elemento de articulação (se existir) aninhados

votos
2

HTML:

<ul class=parent>
   <li><a href=#>toggler</a>
       <ul class=child>
       ...
       </ul>
   </li>
</ul>

Eu gostaria de alternar 'criança' UL (se existir) via 'toggler' link. Não pode me múltipla pai> filho elementos para que eu gostaria de alternar só a criança relevante.

Agradeço antecipadamente por sua ajuda.

Publicado 19/01/2010 em 12:14
fonte usuário
Em outras línguas...                            


5 respostas

votos
3

A UL não é uma criança para a âncora, mas usando next()é bastante simples:

$('ul a').click(function() {
     $(this).next().toggle();
});
Respondeu 19/01/2010 em 12:23
fonte usuário

votos
1

Dado o seu link tem um id:

<a id="Mylink" href="#">

O jQuery seria:

$("#MyLink").click(function(){
    $(this).siblings('.child').toggle();
});

Você pode selecionar diretamente pelo elemento e classe em vez de ID:

$('ul.parent li a')

Mas seletores ID são geralmente considerados para ser mais rápido

A função de alternância também aceita um parâmetro se você deseja animar, por exemplo,

    $(this).siblings('.child').toggle('slow');  /or 'medium', or 'fast'
    $(this).siblings('.child').toggle(100); //100 millisecs

Uma variação deste é slideToggle, com os mesmos parâmetros.

    $(this).siblings('.child').slideToggle('slow');

http://docs.jquery.com/Effects/toggle

Respondeu 19/01/2010 em 12:19
fonte usuário

votos
0
$('.parent a').click(function () {
  $('.child', this.parentNode).toggle();
});
Respondeu 19/01/2010 em 12:53
fonte usuário

votos
0
$("a.toggler").click(function(){
   $(this).parent().children('.child').toggle();
});
Respondeu 19/01/2010 em 12:18
fonte usuário

votos
0
$('ul.parent li a').click(function(event) {

    $(this).next('ul.child').slideToggle(500);
    event.preventDefault();

});

Você já pensou em vez de usar um link lá, um <button>.

Respondeu 19/01/2010 em 12:17
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more