jquery遍历以查找父项';父母

jquery遍历以查找父项';父母,jquery,Jquery,HTML: authorx 究竟 12-23 13:22:15 我想在本节中找到相对于的父li。我找不到这样做的函数。我试过prev(),parentsUntil()他们都做不到。目前,我必须使用$(this).parent().parent().parent()才能访问。是否有直接查找父级的功能?您可以使用。试试这个: <li class="comment"> <div class="p_comm"> <div class="avatar"><

HTML:

  • authorx 究竟 12-23 13:22:15
  • 我想在本节中找到相对于
    的父li。我找不到这样做的函数。我试过
    prev(),parentsUntil()
    他们都做不到。目前,我必须使用
    $(this).parent().parent().parent()
    才能访问
  • 。是否有直接查找父级的功能?

    您可以使用。试试这个:

    <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>
    
    .parent()
    本身仅指节点的直接祖先,但您也可以执行以下操作:

    $(this).closest("li.comment");
    
    让JQuery返回DOM树,直到找到匹配的祖先节点。在这种情况下,
    li
    将指向
    a
    li
    祖先


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

    或者:

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

    .parents()和.parent()方法类似,只是 后者只在DOM树上移动一个级别

    正如您所看到的,当您使用带选择器的父对象时,您将不会有问题。

    您应该使用它来遍历DOM,直到它找到您要查找的元素:

    var p = $('.del').parents('li');
    console.log(p);
    
    如果您以另一种方式执行此操作(即,您拥有
    li
    并希望找到
    a
    ),您将使用:

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

    使用以下代码:

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

    他最好还需要一个用于可维护性目的的选项选择器。如果在问题中给出的示例范围之外,DOM上还有其他“li”元素,则这是危险的
    $('li').find('a');
    
    $("a.del").click(function() {
        alert($(this).closest("li").attr("class"))
     })
    
    $(function(){
        $("a").click(function(){
            $(this).parents("li").hide();
        })
    })