Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中找到第二个最近的祖先?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在jQuery中找到第二个最近的祖先?

Javascript 如何在jQuery中找到第二个最近的祖先?,javascript,jquery,Javascript,Jquery,我的DOM看起来像这样: <li> <li><a class="editEntity>Edit</a></li> <li><a class="deleteEntity>Delete</a></li> </li> 非常感谢您的帮助。向家长求助: $(this).closest('li').parent().closest('li').addClass('select

我的DOM看起来像这样:

<li>
   <li><a class="editEntity>Edit</a></li>
   <li><a class="deleteEntity>Delete</a></li>
</li>
非常感谢您的帮助。

向家长求助:

$(this).closest('li').parent().closest('li').addClass('selected');
它不起作用,因为它是从当前元素开始的,因此如果您在与选择器匹配的某个对象上调用它,则返回与开始时相同的内容

或者,您可以使用
家长

请注意,
:eq
使用基于0的索引,因此
:eq(1)
是第二个父级
li

但是,您引用的HTML无效(an
li
);我想你的意思是:

<li>
   <ul>
      <li><a class="editEntity>Edit</a></li>
      <li><a class="deleteEntity>Delete</a></li>
   </ul>
</li>
    • 删除

  • …或类似内容。

    在我之前的评论之后。。以下是承诺的示例…:)

    停在第二个索引处

    更多信息可以在这里找到

    您可以使用

    $('li a.editEntity').live('click', function() {
        $(this).parents('li').addClass('selected');
    });
    

    我正在使用此代码根据页面添加活动类。这对于AdminLTE 3的多级子菜单是100%有效的,只需将此代码放在页面的页脚部分

    var url = window.location;
    const allLinks = document.querySelectorAll('.nav-item a');
    const currentLink = [...allLinks].filter(e => {
        return e.href == url;
    });
    
    currentLink[0].classList.add("active");
    currentLink[0].closest(".nav-treeview").style.display = "block ";
    currentLink[0].closest("ul.nav-treeview").closest('li').classList.add('menu-open');
    
    $('.menu-open').find('a').each(function() {
        if (!$(this).parents().hasClass('active')) {        
            $(this).parents().addClass("active");
            $(this).addClass("active");
        }
    });
    

    循环所有子项,并在第二个子项中停止(并应用任何您希望的内容)。我会看一看jquery的。下面的每个()我都会举一个例子,它会将jquery添加到所有父级
    li
    s,包括
    a
    的直接父级。请添加解释。因此,不鼓励只使用代码的答案,并将其视为低质量的答案。随着将来的访问者学习到一些有价值或有见解的东西,帮助他们解决自己的编码问题,大多数投票会随着时间的推移而积累。考虑编辑,以添加一个解释说明代码的关键部分是如何解决OP问题的。
    $('li').each(function(index) {
        alert(index + ': ' + $(this).text());
      });
    
    $('li a.editEntity').live('click', function() {
        $(this).parents('li').addClass('selected');
    });
    
    var url = window.location;
    const allLinks = document.querySelectorAll('.nav-item a');
    const currentLink = [...allLinks].filter(e => {
        return e.href == url;
    });
    
    currentLink[0].classList.add("active");
    currentLink[0].closest(".nav-treeview").style.display = "block ";
    currentLink[0].closest("ul.nav-treeview").closest('li').classList.add('menu-open');
    
    $('.menu-open').find('a').each(function() {
        if (!$(this).parents().hasClass('active')) {        
            $(this).parents().addClass("active");
            $(this).addClass("active");
        }
    });