2011-01-20 115 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