【发布时间】:2018-12-14 17:41:31
【问题描述】:
我需要一个单击事件上的 jQuery 选择器来不针对动态内容。我目前有这个:
$('body:not(.sel)').on('click', function() {
所以这不应该运行.sel类的函数,而是由jQuery动态生成的。
【问题讨论】:
我需要一个单击事件上的 jQuery 选择器来不针对动态内容。我目前有这个:
$('body:not(.sel)').on('click', function() {
所以这不应该运行.sel类的函数,而是由jQuery动态生成的。
【问题讨论】:
您当前的选择器正在寻找没有.sel 类的body 元素。我假设您的意思是您要选择 inin 正文中没有 .sel 类的任何内容,在这种情况下,您需要在术语之间留一个空格:
$('body :not(.sel)').on('click', function() {
// your logic...
});
也就是说,这是搜索整个 DOM 并向每个相关元素添加一个点击处理程序。更好的办法是在 body 上附加一个处理程序,并在事件冒泡时检查目标上的类:
$('body').on('click', function(e) {
if (!e.target.classList.contains('sel')) {
// your logic...
}
});
【讨论】:
e.target.classList.contains('sel') 不是类似于$(this).hasClass("sel") 吗?鉴于我们使用的是 jQuery,后者在语法糖方面似乎更好。
this 将是 body,而不是单击的元素。如果您愿意,可以使用$(e.target).hasClass('sel')
$('.sel').click() 或$('body').not('.sel').click()...呃...看起来我在毫无根据地问您问题...?
$('body').not('sel') 正在寻找body 元素,而不是在 体内的元素。 $('.sel').click() 也与 OP 想要的相反。
您应该使用此代码。
$("html, body").not('.sel').click(function() {
alert('clicked');
});
试试这个代码。
【讨论】:
sel 类的html 和body 元素,这没什么意义。