Javascript jQuery:单击*仅*此元素
在上面高度艺术化的绘画中,绿色的正方形是粉色正方形的孩子。在我的函数中,粉红色的方块被绿色的方块包围着,所以绿色的方块可以是任何东西——超链接、图像、按钮等等 我只想在粉色div上点击一下,如果它不是在绿色元素上点击一下的话 这可以通过在绿色正方形上使用鼠标翻转布尔值来实现,但这对我来说似乎是一种混乱的方式 有什么线索吗 重要编辑:我根本不能弄乱绿色方块,所以不要在点击事件中添加任何内容。将$div\u id:not'excluded\u element'。点击;帮助Javascript jQuery:单击*仅*此元素,javascript,jquery,click,parent-child,Javascript,Jquery,Click,Parent Child,在上面高度艺术化的绘画中,绿色的正方形是粉色正方形的孩子。在我的函数中,粉红色的方块被绿色的方块包围着,所以绿色的方块可以是任何东西——超链接、图像、按钮等等 我只想在粉色div上点击一下,如果它不是在绿色元素上点击一下的话 这可以通过在绿色正方形上使用鼠标翻转布尔值来实现,但这对我来说似乎是一种混乱的方式 有什么线索吗 重要编辑:我根本不能弄乱绿色方块,所以不要在点击事件中添加任何内容。将$div\u id:not'excluded\u element'。点击;帮助 为绿色元素设置一个单独的单
为绿色元素设置一个单独的单击事件侦听器,并使其成为事件。preventDefault您可以执行以下操作:
$('.pink-box-selector').click(function(e) {
if ($(e.target).is('.pink-box-selector')) {
// do stuff here
}
});
两种选择。您可以首先检查目标是否为绿色div
$('#pinkdiv').click(function(e) {
if ($(e.target).is('#greendiv')) return;
// handle the event
});
或者,您可以正常地为粉色div编写click处理程序,并停止绿色div上的单击传播
$('#greendiv').click(function(e) {
e.stopPropagation();
});
我最难过的是,SO不让我创建新的标记“激动人心的图像”=[这个线程:和你的问题差不多吗?六个月后,现在我可以创建自己的标记了-我不确定我会,但是=]@jmar777的第一个选项检查目标是否是粉色div可能更有意义。这个选择器不会选择任何内容。它会在div_id内部寻找一些东西,而不是实际存在的唯一元素。作为旁注,此解决方案的优点之一是,您不必根据您包装的元素修改代码,因为您说过包装的元素可能会有所不同。它基本上是白名单,而不是黑名单。您也可以使用$e.target.isthis来避免两次引用选择器,这可能会使将来的维护更容易
$("#pink").click(function(){
if(!$("#green").is(":hover")) {
alert('here');
}
});