javascript – 委托事件不能与:not()选择器组合使用

前端之家收集整理的这篇文章主要介绍了javascript – 委托事件不能与:not()选择器组合使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在除特定元素之外的所有点击上执行某些操作.

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

我的代码

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

我希望在< a>被忽略,但事实并非如此.

我做错了,这是jQuery方面的错误吗?

解决方法

代码中有很多事情并不明显.最重要的是,点击事件实际上附加到body元素.由于该元素不是锚点,您将始终得到警报. (事件代理工作是因为点击事件从a到其所有祖先(包括正文)直到达到文档为止.)

你想要做的是检查event.target.这将告诉你实际点击的元素,但实际的点击事件仍然绑定到body元素:

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

http://jsfiddle.net/y3kx19z7/

猜你在找的JavaScript相关文章