gpt4 book ai didi

javascript - 委托(delegate)事件不能与 :not() selector 结合使用

转载 作者:可可西里 更新时间:2023-11-01 02:54:00 26 4
gpt4 key购买 nike

我想对除特定元素之外的所有点击执行某些操作。

我创建了一个非常简单的示例来演示该问题:http://jsfiddle.net/nhe6wk77/ .

我的代码:

$('body').on('click', ':not(a)', function () {
// do stuff
});

我希望所有点击 <a>被忽略,但事实并非如此。

是我做错了什么还是 jQuery 方面的错误?

最佳答案

代码中发生了很多不明显的事情。最重要的是,click 事件实际上附加到 body 元素。由于该元素不是 anchor ,因此您将始终收到警报。 (事件委托(delegate)有效是因为 click 事件从 a 冒泡到它所有的祖先,包括 body,直到它到达 document。)

您要做的是检查 event.target .这会告诉您实际点击的元素,但实际的 click 事件仍然绑定(bind)到 body 元素:

$('body').on('click', function (e) { // e = event object
if ($(e.target).is(':not(a)')) {
alert('got a click');
}
});

http://jsfiddle.net/y3kx19z7/

关于javascript - 委托(delegate)事件不能与 :not() selector 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com