出于某种原因,not()
功能中的on()
无效。我只希望在单击aqua section
(parent)元素时运行该函数,如果单击灰色div
(子)元素则不执行任何操作。
jQuery的:
$('body').append('<section><div class="someClass"></div><section>');
$('body').on('click', 'section:not(".someClass")', function(){
alert('Aqua not gray clicked.');
});
另外,如果点击section
aqua元素,为什么会弹出两次警告?
答案 0 :(得分:1)
对于后代选择器,section和:not
之间会有空格,并且你可能需要没有,因为预期的元素是section的后代。对于空格,它将看起来没有类someclass
的部分。
$('body').on('click', 'section :not(:has(.someClass))', function(){
alert('Aqua not gray clicked.');
});
您可以将事件绑定到section,并通过在处理程序中为具有类someclass的后代的部分传递代码的执行。
$('body').on('click', 'section', function(){
if($(this).find('.someClass').length > 0) return;
alert('Aqua not gray clicked.');
});
答案 1 :(得分:0)
您需要检查点击的实际元素(e.target
)是否具有该类:
if ($(e.target).hasClass('someClass')) return;