Javascript 如何知道单击事件是否起源于div之外?
单击按钮时,会触发执行以下操作的功能:Javascript 如何知道单击事件是否起源于div之外?,javascript,jquery,Javascript,Jquery,单击按钮时,会触发执行以下操作的功能: function doThings() { 1. display an overlay 2. display table on top of overlay 3. assign event for table click 4. assign event for everything else BUT table click } 4.的思想是处理除我的表或更具体地说,在我的表div内以外的任何地方产生的点击。以下是我尝试过的: fu
function doThings() {
1. display an overlay
2. display table on top of overlay
3. assign event for table click
4. assign event for everything else BUT table click
}
4.
的思想是处理除我的表
或更具体地说,在我的表div
内以外的任何地方产生的点击。以下是我尝试过的:
function doThings() {
// 1. display an overlay
// 2. display table on top of overlay
// 3. assign event for table click (interaction happens here)
// 4.
$("body").not( ".table-div" ).click(function(e) {
// hide my overlay and stop interaction
});
}
问题是,当添加4.
时,单击“我的”按钮时,部分3.
中编码的交互不会开始。我也试过:
// 4.
$("body").click(function(e) {
if ( ! (e.target.class == "table-div" || $(e.target).parents(".table-div").size()) ) {
// hide my overlay and stop interaction
}
});
它们都不起作用。我假设
body
click事件和table div
click事件之间存在冲突,但我不确定如何解决它。有没有办法让这一切顺利进行?谢谢大家! 因此,我想您需要通过以下方式停止事件传播:
event.stopPropagation();
在3点时,你需要使用它
三点。因为事件往往会冒出泡沫,而你没有处理它。似乎有可能。所以,您只需要处理事件传播。从而阻止事件冒泡
应该是这样的:
$( ".table-div" ).click(function(e) {
e.stopPropagation(); // <---here
$(“.table div”)。单击(函数(e){
e、 stopPropagation();//您可以共享您的代码或为其创建一个提琴吗?我在#3尝试了此操作,但没有任何影响。如果删除#4,则第#3部分工作正常。一旦引入#4,第#3部分将停止工作,且没有任何运行时错误。您是否在click事件的回调参数中传递了该事件?