Javascript jQuery:单击*仅*此元素

Javascript jQuery:单击*仅*此元素,javascript,jquery,click,parent-child,Javascript,Jquery,Click,Parent Child,在上面高度艺术化的绘画中,绿色的正方形是粉色正方形的孩子。在我的函数中,粉红色的方块被绿色的方块包围着,所以绿色的方块可以是任何东西——超链接、图像、按钮等等 我只想在粉色div上点击一下,如果它不是在绿色元素上点击一下的话 这可以通过在绿色正方形上使用鼠标翻转布尔值来实现,但这对我来说似乎是一种混乱的方式 有什么线索吗 重要编辑:我根本不能弄乱绿色方块,所以不要在点击事件中添加任何内容。将$div\u id:not'excluded\u element'。点击;帮助 为绿色元素设置一个单独的单

在上面高度艺术化的绘画中,绿色的正方形是粉色正方形的孩子。在我的函数中,粉红色的方块被绿色的方块包围着,所以绿色的方块可以是任何东西——超链接、图像、按钮等等

我只想在粉色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');   
    }
});