Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript stopImmediatePropagation()是否应该停止从单个操作派生的后续事件?_Javascript_Jquery - Fatal编程技术网

Javascript stopImmediatePropagation()是否应该停止从单个操作派生的后续事件?

Javascript stopImmediatePropagation()是否应该停止从单个操作派生的后续事件?,javascript,jquery,Javascript,Jquery,单击某个元素以使其具有焦点时,焦点事件,然后单击事件,激发。我应该能够停止focus事件中的传播,并停止click处理程序的运行。对吧? 但是,没有停止即时版权、防止违约、停止版权或返回虚假信息;停止单击处理程序的触发 简化代码: eComponentFocus = function(e,eventThis){ e.stopImmediatePropagation(); console.log(e.isImmediatePropagationStopped()); // tru

单击某个元素以使其具有焦点时,焦点事件,然后单击事件,激发。我应该能够停止focus事件中的传播,并停止click处理程序的运行。对吧?

但是,没有停止即时版权、防止违约、停止版权或返回虚假信息;停止单击处理程序的触发

简化代码:

eComponentFocus = function(e,eventThis){
   e.stopImmediatePropagation();   
   console.log(e.isImmediatePropagationStopped()); // true
   console.log('focus');
   return false;
}


eComponentClick = function(e,eventThis){
   console.log('eComponentClick');
}

var base=this;
$Component.on('focus',function(e){base.eComponentFocus(e,this);});
$Component.on('click',function(e){base.eComponentClick(e,this);});
控制台,当单击$Component(一个div)时:

true
focus
eComponentClick
stopImmediatePropagation是否应该停止从单个用户操作派生的后续事件

更新:


这是问题的症结所在。单击div将触发焦点,然后单击,即使焦点事件试图阻止传播

你确定你看到的效果不是因为mousedown或mouseup事件吗?我添加了console.log'eventname';对于所有事件处理程序-当我单击元素时,仅触发焦点和单击事件。您是在触摸设备中还是在常规浏览器中?如果是普通浏览器,在点击事件发生之前,应该会触发mousedown和mouseupevent。我添加了一个问题。它的FF24在桌面上。我没有在此元素上注册mousedown或mouseup的任何处理程序。我不是100%确定,但我认为stopImmediatePropagation只会停止由相同用户操作导致的相同事件类型的进一步事件。如果您添加第二个焦点处理程序,它将被第一个焦点处理程序取消。