我正在尝试将点击绑定到所有没有特定类的元素。
我尝试了以下操作,经过一些谷歌搜索,它看起来是正确的做法。
$('*:not(.class)').click(function() {
alert('Clicked...');
});
$(':not(.class)').click(function() {
alert('Clicked...');
});
现在,我在写这篇文章时刚刚意识到,元素是在其他元素之上分层的,而点击下的所有元素也会引发点击?它是否正确?我认为就像执行以下代码一样,每次点击会产生3到6次“点击”。
$('*').click(function() {
console.log('click');
});
有人有光线吗?
编辑(已经):我刚想到了一个解决方法,如下所示:
$('*').click(function() {
if ($(this).hasClass('class')) {
console.log('click');
return false;
} else {
console.log('click');
}
});
LOGIC:这个“class”元素将是顶层元素,因此会触发第一次点击(理论制作),因此它具有我们返回/中断的类;
答案 0 :(得分:9)
使用stopPropagation
。这将阻止clicked
项下面的所有元素也被触发。
$('*:not(.class)').click(function(event) {
event.stopPropagation();
alert('Clicked...');
});