标签:block 函数 func 阻止事件冒泡 style ati spro 绑定 open
问题定位:通过浏览器F12定位到点击一次出现两次调用。
问题复现:
$("#mail_span").on("click",function(){ if($(".treeselect").children(".treeselect-up").css("display")=="none"){ treeSelectClick(); var $up = $(".treeselect").find(".treeselect-up"); $up.css({ display : "block" }); $("#mail_bottom").attr("class", "glyphicon glyphicon-triangle-top"); }else{ treeSelectClick(); $("#mail_bottom").attr("class", "glyphicon glyphicon-triangle-bottom"); } } })
问题解决:
$("#mail_span").on("click",function(e){ if(!e.isPropagationStopped()){//确定stopPropagation是否被调用过 if($(".treeselect1").children(".treeselect-up").css("display")=="none"){ treeSelectClick(); var $up = $(".treeselect1").find(".treeselect-up"); $up.css({ display : "block" }); $("#mail_bottom").attr("class", "glyphicon glyphicon-triangle-top"); }else{ treeSelectClick(); $("#mail_bottom").attr("class", "glyphicon glyphicon-triangle-bottom"); } } e.stopPropagation();//必须要,不然e.isPropagationStopped()无法判断stopPropagation是否调用过 })
查阅资料:
event.preventDefault() :阻止默认行为,可以用 event.isDefaultPrevented() 来确定preventDefault是否被调用过了
event.stopPropagation() :阻止事件冒泡,事件是可以冒泡的,为防止事件冒泡到DOM树上,不触发任何前辈元素上的事件处理函数,可以用 event.isPropagationStopped() 来确定stopPropagation是否被调用过了
标签:block 函数 func 阻止事件冒泡 style ati spro 绑定 open
原文地址:https://www.cnblogs.com/donchen/p/10075790.html