在JQuery中如何在不使用元素ID的情况下遍历DOM树?

时间:2011-01-20 10:59:02

标签: jquery dom

我无法使用元素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 ...因此需要远离ID特定。

我尝试过使用.prevUntil()......虽然我一定错过了什么。

任何帮助都会得到极大的赞赏,谢谢

3 个答案:

答案 0 :(得分:2)

有点像这样的东西应该有效(未经测试)

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

答案 1 :(得分: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

答案 2 :(得分:0)

将它抽象为一个以id作为参数的函数。