如何捕获使用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

我试图在单击子元素链接并向其添加名为“highlightchild”的类时捕获事件。此外,我想检查是否存在任何子元素链接,如果没有子元素存在,即“第三级”高亮显示“highlightparent”父元素。如何使用jquery实现这一点

$(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');
});