jquery遍历以查找父级的父级

时间:2011-12-23 05:47:04

标签: jquery

HTML:

<li class="comment">
<div class="p_comm">
 <div class="avatar"><img src="/img/1.jpg"></div>
 <div class="c_auth">author<a class="del" title="delete it!" rel="19">x</a></div>
 <div class="c_cont w">what ever</div>
 <div class="c_time">12-23 13:22:15</div>
</div>
</li>

我想在本节中找到相对于<a>的父li。我找不到这样做的功能。我试过prev(),parentsUntil()他们都不能做到这一点。目前,我必须使用$(this).parent().parent().parent()来覆盖<li>。是否有直接查找父<li>的功能?

7 个答案:

答案 0 :(得分:10)

您可以使用closest()。试试这个:

$(this).closest("li.comment");

答案 1 :(得分:3)

或者这个:

$(this).parents('li');

答案 2 :(得分:2)

var p = $('.del').parents('li');
console.log(p);

http://jsfiddle.net/hZY8R/

  

.parents()和.parent()方法类似,除了   后者只在DOM树上运行一个级别。

正如您所看到的,当您使用带选择器的父母时,您会没事的。

答案 3 :(得分:1)

你应该使用closest()遍历DOM,直到找到你想要的元素:

$('a').closest('li');

如果你这样做是相反的(即你有li并希望找到a)你会使用:

$('li').find('a');

答案 4 :(得分:0)

.parent()本身只是指节点的直接祖先,但你也可以这样做:

var li = $('a.del').parents('li.comment');

让JQuery返回DOM树,直到找到匹配的祖先节点。在这种情况下,li将指向a的{​​{1}}祖先。


编辑:忘记li只上升一级,而.parent()上升到整个树。但是,两者都接受选择器参数。

答案 5 :(得分:0)

$("a.del").click(function() {
    alert($(this).closest("li").attr("class"))
 })

答案 6 :(得分:0)

使用以下代码:

$(function(){
    $("a").click(function(){
        $(this).parents("li").hide();
    })
})

http://jsfiddle.net/4yCux/1/