如何捕获使用jquery单击的子链接?
我试图在单击子元素链接并向其添加名为“highlightchild”的类时捕获事件。此外,我想检查是否存在任何子元素链接,如果没有子元素存在,即“第三级”高亮显示“highlightparent”父元素。如何使用jquery实现这一点如何捕获使用jquery单击的子链接?,jquery,events,click,Jquery,Events,Click,我试图在单击子元素链接并向其添加名为“highlightchild”的类时捕获事件。此外,我想检查是否存在任何子元素链接,如果没有子元素存在,即“第三级”高亮显示“highlightparent”父元素。如何使用jquery实现这一点 $(document).ready(function() { $('.menu ul').hide(); $('.menu .arrowUp').click(function() { $('.menu ul').hide(); $(this).fi
$(document).ready(function() {
$('.menu ul').hide();
$('.menu .arrowUp').click(function() {
$('.menu ul').hide();
$(this).find(".third-level").toggle();
});
});
html
-
-
-
那么:
$(".arrowUp > a").bind("click", function(event) {
event.preventDefault();
if ($(this).closest(".third-level").length > 0 ||
$(this).siblings().length === 0) {
$(this).addClass("highlight");
}
});
与父级的所有链接具有类第三级
,或与无同级a
s的链接
编辑:没有注意到您需要不同的父/子高亮显示类,下面是您的方法:
$(".arrowUp > a").bind("click", function(event) {
event.preventDefault();
if ($(this).closest(".third-level").length > 0) {
$(this).addClass("childhighlight");
}
else if ($(this).siblings().length === 0) {
$(this).addClass("parenthighlight");
}
});
不确定你的第二部分是什么意思(可以重新措辞和/或澄清吗?),但我会使用:
这只向菜单根添加一个事件处理程序。我认为这是比向所有节点添加侦听器更好的选择。我唯一的建议是,您可以检查$(this).hasClass(“.highlightchild”),而不是查询、删除、添加。@Newtang:用于从以前单击的元素中删除该类
$(this).hasClass(“.highlightchild”)
只会帮助查看元素是否是之前单击的元素。我不确定OP想要实现什么,我的解决方案是否合适。但是事件委托应该比添加数千个事件处理程序更可取
$(".arrowUp > a").bind("click", function(event) {
event.preventDefault();
if ($(this).closest(".third-level").length > 0 ||
$(this).siblings().length === 0) {
$(this).addClass("highlight");
}
});
$(".arrowUp > a").bind("click", function(event) {
event.preventDefault();
if ($(this).closest(".third-level").length > 0) {
$(this).addClass("childhighlight");
}
else if ($(this).siblings().length === 0) {
$(this).addClass("parenthighlight");
}
});
$('ul.menu').delegate('a', 'click', function() {
$('ul.menu .highlightchild').removeClass('.highlightchild');
$(this).addClass('.highlightchild');
});