Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 如何强制首先调用动态添加的元素s onclick()_Javascript_Jquery_Event Bubbling - Fatal编程技术网

Javascript 如何强制首先调用动态添加的元素s onclick()

Javascript 如何强制首先调用动态添加的元素s onclick(),javascript,jquery,event-bubbling,Javascript,Jquery,Event Bubbling,当我单击anchoraddEvent()时,首先调用,然后是editEvent(),但我希望当我单击div时,然后是addEvent(),当我单击anchor时,然后是editEvent 我知道冒泡,所以这就是为什么我引入了一个内部静态div来绑定侦听器,但仍然是addEvent()首先调用。我不知道如何强制先调用editEvent $('#inner').on('click','.editEV',function(){ editEvent(); }); 用这个。 如果您想阅读更多关于

当我单击anchor
addEvent()
时,首先调用,然后是
editEvent()
,但我希望当我单击div时,然后是addEvent(),当我单击anchor时,然后是
editEvent

我知道冒泡,所以这就是为什么我引入了一个内部静态div来绑定侦听器,但仍然是
addEvent()
首先调用。我不知道如何强制先调用
editEvent

$('#inner').on('click','.editEV',function(){
    editEvent();
});
用这个。

如果您想阅读更多关于.stopPropagation()。选择其中一个以获得更清晰的代码。我会在上选择jquery,这个问题的解决方案是创建两个事件——一个在div上,另一个在edit元素上,但在第二个事件中,我们需要使用
e.stopPropagation
方法停止冒泡。以下是完整的工作示例:

$(函数(){
$(“#outerDiv”)。在(“单击”,函数(e){
console.log(“添加单击”);
}); 
$(“#outerDiv”)。在(“单击”,“编辑”,函数(e){
console.log(“编辑点击”);
e、 stopPropagation();//停止传播事件非常重要
});
});

事件1

如果不想更改代码,也可以使用此选项

e.stopPropagation();

使用
event.stopPropogation()
editEvent
@Martin–IMO中,它是关于
propogaton
,而不是关于
委派的。这两个“内联事件集(onclick=…)和Jquery on”之间的区别是什么?内联是否具有更高的优先级?不,优先级不存在,确保它们将首先添加并作为第一个运行(事件的调用顺序与它们添加到元素的顺序相同)。它们与代码中的事件相同,但代码是在DOM就绪后运行的,内联onlick会提前添加侦听器。我写了关于选择其中一个的信息,因为代码会更容易理解。所以你是说,内联侦听器的绑定甚至在jquery的ready()函数之前就发生了?是的,我是这么说的。@AmanNagarkoti wtf是这样的吗?我的答案在两天前被设置为正确,两分钟后,同样的答案被添加,你改变了主意。这很不公平。
e.stopPropagation();
$(function(){

$("#outerDiv").on("click",function(e){

  addEvent();

}); 

$("#outerDiv").on("click",".editEV",function(e){

  editEvent();
  e.stopPropagation();

});

});