我似乎找不到制作选择器的正确方法,它应该只在 DIV 的背景和主图像上触发点击 - 如果有,但如果我点击位于该 div 中的其他一些元素 -像 hrefs 等 - 它应该什么都不做。
我试过这个:
$('#SHOWCASE, #SHOWCASE > img')
Showcase - 是 DIV 的 ID,img 是直接附加到它的图像。但是,如果我向它添加 .Click 函数,它仍然会触发该 div 中的任何元素,例如链接等,请注意这些链接也具有绝对位置。
那么有什么解决方案吗?
以最简单的方式,只需测试单击的元素是否是您将处理程序绑定到的元素:
$('<selector>').click(function(event) {
if(event.target === this) {
// do something
}
});
参考:event.target
您需要阻止该 div 中的其他元素冒泡。像 jQuery 的 stopPropagation() 这样的东西应该可以解决问题。将其添加到#SHOWCASE 的所有子项中。
$('#hello, #hello > img').on('click', function(e) {
if(e.target == this) {
console.log(this);
}
});