我是靠谱客的博主 哭泣鞋子,最近开发中收集的这篇文章主要介绍jquery中on动态绑定阻止冒泡事件异常,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

绪论:如果动态生成的元素用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动态绑定阻止冒泡事件异常所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部