jQuery bind()-如果LI点击事件触发,则阻止HTML点击事件触发

jQuery bind() - Prevent HTML click event from firing if LI click event fires

本文关键字:事件 HTML bind LI jQuery 如果      更新时间:2023-09-26

在我的js中,我有两个点击绑定:

$('#menu > li').bind('click', function () {...});

$('html').bind('click', function () {...});

根据点击的内容,它们各自做的事情略有不同。问题是,点击LI也是点击HTML,所以当我点击LI时,LI点击和HTML点击事件都会触发。

如果我点击LI以外的任何地方,我只会得到HTML点击,根据需要。

有没有办法说,基本上,"如果用户点击了一个LI元素,就这样做。否则,如果用户点击的是除LI之外的任何其他地方,就这么做"?

您所需要做的就是防止事件冒泡。使用jQuery,只需在li事件处理程序中添加e.stopPropagation()即可。

所以你更新的代码会是这样的:

$('#menu > li').bind('click', function (e) {
    e.stopPropagation();
    ...
});

进一步阅读:

https://api.jquery.com/event.stoppropagation/

http://www.quirksmode.org/js/events_order.html