概述
绪论:如果动态生成的元素用on来绑定事件,会根据selector不同,阻止冒泡的结果也不同。
公共html代码和css样式如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.item{width:500px;height: 50px;background-color: lightsalmon;margin-top: 10px;line-height: 50px;}
.delete{width: 50px;height: 50px;background-color: lightgreen;}
</style>
</head>
<body>
<button>添加一个LI</button>
<ul class="ulwrap">
<li class="item"><em>1</em><span class="delete">删除</span></li>
<li class="item"><em>2</em><span class="delete">删除</span></li>
<li class="item"><em>3</em><span class="delete">删除</span></li>
<li class="item"><em>4</em><span class="delete">删除</span></li>
<li class="item"><em>5</em><span class="delete">删除</span></li>
<li class="item"><em>6</em><span class="delete">删除</span></li>
</ul>
</body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('button').on("click",function(){
var lis = $('.item').length + 1;
var newLi = '<li class="item" οnclick="deleteFn()"><em>'+lis+'</em><span class="delete">删除</span></li>';
$('.ulwrap').append(newLi);
});
})
1、父节点绑定的父元素selector大于子元素绑定的selector,即父节点绑定的父元素大于子元素绑定的父元素,阻止冒泡正常
//能阻止冒泡,父元素的selector>子元素的selector
$('.item').on('click','.delete',function(){
var n = $(this).parent().index();
alert("删除第几个==" +
n);
$(this).parent().remove();
event.stopPropagation();
});
$('.ulwrap').on("click",'.item',function(){
var n = $(this).index();
alert("li第几个==" + n);
});
//可以能阻止冒泡,父元素的selector>子元素的selector
$('.ulwrap').on('click','.delete',function(){
var n = $(this).parent().index();
alert("删除第几个==" +
n);
$(this).parent().remove();
event.stopPropagation();
});
$('body').on("click",'.item',function(){
var n = $(this).index();
alert("li第几个==" + n);
});
2、父元素和子元素绑定的父节点为同一个;不能阻止冒泡
//不可以能阻止冒泡,父元素的selector=子元素的selector
$('.ulwrap').on('click','.delete',function(){
var n = $(this).parent().index();
alert("删除第几个==" +
n);
$(this).parent().remove();
event.stopPropagation();
});
$('.ulwrap').on("click",'.item',function(){
var n = $(this).index();
alert("li第几个==" + n);
});
3、父元素绑定的节点<子元素绑定的父节;不能阻止冒泡
//不能阻止冒泡,父元素的selector<子元素的selector
$('body').on('click','.delete',function(){
var n = $(this).parent().index();
alert("删除第几个==" +
n);
$(this).parent().remove();
event.stopPropagation();
});
$('.ulwrap').on("click",'.item',function(){
var n = $(this).index();
alert("li第几个==" + n);
});
结论:子元素事件中需要添加event.stopPropagation();
1、父节点绑定的父元素大于子元素绑定的父元素,阻止冒泡正常
2、父元素和子元素绑定的父节点为同一个;不能阻止冒泡
3、父元素绑定的节点<子元素绑定的父节;不能阻止冒泡
最后
以上就是哭泣鞋子为你收集整理的jquery中on动态绑定阻止冒泡事件异常的全部内容,希望文章能够帮你解决jquery中on动态绑定阻止冒泡事件异常所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复