2011-01-20 110 views
0

我无法遍历DOM树而不使用元素ID。如何在JQuery中不使用元素ID来遍历DOM树?

下面是HTML结构:

<dl id="dd-prefix-one" class="dropdown f-left"> 
    <dt><a href="#">Lorem<span class="value">ipsum</span></a></dt> 
    <dd><ul>...</ul></dd> 
</dl> 

这里是JQuery的我使用的时刻:

$('#dd-prefix-one dt a').click(function() { 
    $('#dd-prefix-one dd ul').slideToggle(); 
    $('#dd-prefix-two dd ul, #dd-prefix-three dd ul, #dd-prefix-four dd ul, #dd-prefix-five dd ul').fadeOut(200); 
}); 

这jQuery是在我的代码中带刚的变化重复5次ID的...因此需要摆脱身份证明确。

我试图使用.prevUntil()...虽然我一定错过了一些东西。

任何帮助将不胜感激,谢谢

回答

2

在粘贴代码:

<dl id="dd-prefix-one" class="dropdown f-left"> 
    <dt><a href="#">Lorem<span class="value">ipsum</span></a></dt> 
    <dd><ul>...</ul></dd> 
</dl> 

您可以使用类似:

$('dl dt a').click(
    function() { 
     $(this).closest('dl').find('ul').slideToggle(); 
     $(this).closest('dl').siblings().find('ul').fadeOut(200); 
     return false; 
    }); 

JS Fiddle demo

+0

@Nasir:很高兴能有所帮助! =) – 2011-01-20 14:48:40

0

抽象出来作为取ID为自变量的函数。

+0

对不起,我很新的JavaScript/JQuery。我不完全确定你的意思是将它抽象成函数 – Nasir 2011-01-20 11:04:49

2

东西有点像这应该工作(未测试)

$('dl.dropdown dt a').click(function() { 
    $(this).closest('dl').find('ul').slideToggle(); 
    $('dl.dropdown dt a').not(this).find('ul').fadeOut(200); 
}); 
+0

感谢它的工作!我想我会从现在开始使用.find()***** – Nasir 2011-01-20 11:09:53