时间:2021-05-26
简单说下事件委托与阻止冒泡
html:
<ul class="clearfix" data-type="cityPick"> <li class="active_sort_opts" data-id="0">全部</li> <li data-id="88">纽约</li> <li data-id="119">洛杉矶</li> <li data-id="138">拉斯维加斯</li> <li data-id="84">夏威夷</li> <li data-id="120">旧金山</li> <li data-id="105">奥兰多</li> <li data-id="118">西雅图</li> </ul>js:
$("ul[data-type='cityPick']").on('click',function(){ alert("父元素ul被点击"); }); $("ul[data-type='cityPick']").on('click','li',function(){ alert("子元素li被点击"); });当点击具体的li元素时,发现ul的事件也被触发了,这是我们不想看到的。
解决:
$("ul[data-type='cityPick']").on('click',function(){ alert("父元素ul被点击"); }); $("ul[data-type='cityPick']").on('click','li',function(e){ e.stopPropagation();//阻止冒泡 alert("子元素li被点击"); });加一句阻止冒泡即可。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文并没有像标题说的那样,真正阻止事件元素的子元素冒泡...只是在子元素冒泡到事件元素处时进行了一个判断,判断是否要触发事件,哦...不对应该是是否要运行事件函
阻止事件冒泡行为,要是不阻止的话,点击div的时候也会同时触发body事件html代码clickthiscss代码div{width:200px;height:
对于javascript的冒泡,我一直误解它了,冒泡,即是从底层往外blowblowblow...惭愧的是,我一直以为阻止冒泡是阻止父元素往子元素传递事件……贴
实现也很简单,但需要注意的是,在点击显示的事件中,需要做阻止事件冒泡的处理,否则就触发页面的点击事件了。但这样做也有一个缺点,即如果同一个页面中如果也有事件阻止
用on绑定时,我把子元素的绑定到document,而把父元素绑定到上级元素,导致returnfalse阻止冒泡无效。事件冒泡$(function(){$(doc