两个嵌套的标签分别绑定不用的点击事件 - JS阻止事件冒泡

问题描述

两个嵌套的标签都绑定了各自的点击事件,当点击内部标签的时候同样也会触发外部标签的点击事件

原因解析

事件冒泡:当该标签触发点击事件时,会逐级向上传播,再执行父标签的点击事件

事件冒泡可阅读: https://www.cnblogs.com/christineqing/p/7607113.html

解决思路

思路一:
event.stopPropagation(); 禁止js的事件冒泡行为

	<script type="text/javascript">
        $(function() {
            $("#id").click(function(event) {
                event.stopPropagation();
            });
        });
	<script>

stopPropagation也是事件对象(Event)的一个方法,作用是阻止目标元素的冒泡事件,但是会不阻止默认行为。

js阻止事件冒泡 https://www.cnblogs.com/hellofangfang/p/10694155.html

本人在使用bootstrap时,禁用事件冒泡会影响bootstrap默认的触发事件,采用自定义实现

思路二:
自定义实现阻止事件冒泡

	var flag = true;
	function inClick(){
	    flag = false;
	}
	function outClick(){
	    if(flag){
	        // ....
	    }
	    flag = true;
	}

定义全局标识变量flag默认为true,内部标签触发点击事件后赋值为false,当向上冒泡执行到父级标签的点击事件时,判断全局变量flag的值,如果为true再执行父标签的点击事件
这样,点击子标签就不会再执行父标签的点击事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值