如何强制先调用动态添加的元素 click()
How can I force to call dynamically added element,s onclick() first
<div id="outerDiv" onclick="javascript:addEvent()">
<div id="inner">
<a class='editEV' href="javascript:void(0)">event1</a>//*added dynamically from addEvent method.*
</div>
</div>
我的脚本是:
$('#inner').on('click','.editEV',function(){
editEvent();
});
当我点击锚 addEvent()
时先调用 editEvent()
,但我希望当我点击 div 时应该调用 addEvent(),然后当我点击锚时 editEvent
.
我知道冒泡,所以我引入了一个内部静态 div 来绑定侦听器,但仍然 addEvent()
先调用。我无法弄清楚如何强制先调用 editEvent
。
e.stopPropagation();
使用这个。
如果你想阅读更多关于 .stopPropagation() 的内容,look here.
您同时使用了内联事件集 ( onclick=.. ) 和 Jquery on。选择其中之一,代码更清晰。我会选择 jquery on,这个问题的解决方案是创建两个事件 - 一个在 div,第二个在编辑元素上,但在第二个我们需要使用 e.stopPropagation
方法停止冒泡。这里有完整的工作示例:
$(function(){
$("#outerDiv").on("click",function(e){
console.log("Add click");
});
$("#outerDiv").on("click",".editEV",function(e){
console.log("Edit click");
e.stopPropagation();//very important to stop propagate event
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="outerDiv" style="padding:20px; background:grey;">
<div id="inner">
<a class='editEV' >event1</a>
</div>
</div>
如果没有 stopPropagation
,我们的事件将上升到 div 并运行它的事件,stopPropagation
避免将事件传播到上层元素。
如果您不想更改代码,也可以使用它。
$(function(){
$("#outerDiv").on("click",function(e){
addEvent();
});
$("#outerDiv").on("click",".editEV",function(e){
editEvent();
e.stopPropagation();
});
});
<div id="outerDiv" onclick="javascript:addEvent()">
<div id="inner">
<a class='editEV' href="javascript:void(0)">event1</a>//*added dynamically from addEvent method.*
</div>
</div>
我的脚本是:
$('#inner').on('click','.editEV',function(){
editEvent();
});
当我点击锚 addEvent()
时先调用 editEvent()
,但我希望当我点击 div 时应该调用 addEvent(),然后当我点击锚时 editEvent
.
我知道冒泡,所以我引入了一个内部静态 div 来绑定侦听器,但仍然 addEvent()
先调用。我无法弄清楚如何强制先调用 editEvent
。
e.stopPropagation();
使用这个。
如果你想阅读更多关于 .stopPropagation() 的内容,look here.
您同时使用了内联事件集 ( onclick=.. ) 和 Jquery on。选择其中之一,代码更清晰。我会选择 jquery on,这个问题的解决方案是创建两个事件 - 一个在 div,第二个在编辑元素上,但在第二个我们需要使用 e.stopPropagation
方法停止冒泡。这里有完整的工作示例:
$(function(){
$("#outerDiv").on("click",function(e){
console.log("Add click");
});
$("#outerDiv").on("click",".editEV",function(e){
console.log("Edit click");
e.stopPropagation();//very important to stop propagate event
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="outerDiv" style="padding:20px; background:grey;">
<div id="inner">
<a class='editEV' >event1</a>
</div>
</div>
如果没有 stopPropagation
,我们的事件将上升到 div 并运行它的事件,stopPropagation
避免将事件传播到上层元素。
如果您不想更改代码,也可以使用它。
$(function(){
$("#outerDiv").on("click",function(e){
addEvent();
});
$("#outerDiv").on("click",".editEV",function(e){
editEvent();
e.stopPropagation();
});
});