我有以下结构(.holder
有40px填充,因此元素.classA
周围有很多空间):
<div class="holder">
<a href="/path/to/file.html" class="classA">Hello</div>
</div>
当用户点击.holder
时会发生某些事情,但如果用户点击元素.classA
这是我目前使用的内容,但我想说点击.holder
但不是.classA
$(document).on('click', '.holder', function() {
modClose();
});
这可能吗?
答案 0 :(得分:4)
单击.classA
时停止事件传播:
$('.classA').on('click', function(evt) {
evt.stopPropagation()
});
$(document).on('click', '.holder', function() {
modClose();
});
关于stopPropagation的jQuery文档:
描述:防止事件冒泡DOM树,防止任何父处理程序收到事件通知。
答案 1 :(得分:2)
另一种方式,虽然相似:
$(document).on('click', '.holder', function(e) {
if($(e.target).hasClass('classA')) return;
modClose();
});
答案 2 :(得分:1)
您可以查看活动的target
:
$(document).on('click', '.holder', function(e) {
if (e.target != this) {
console.log('stop');
return;
}
console.log('go');
});
答案 3 :(得分:1)
您可以检查目标className
$(document).on('click', '.holder', function (e) {
if (e.target.className.indexOf('classA') == -1) {
modClose();
}
});