Javascript 如何在jQuery中找到第二个最近的祖先?
我的DOM看起来像这样: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
<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无效(anli
);我想你的意思是:
<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");
}
});