首页 > 代码库 > JS事件冒泡解决办法
JS事件冒泡解决办法
<div id="div1"> <div id="div2"> <input type="button" value="http://www.mamicode.com/按钮"/> </div></div>
$(function(){ $("div1").click(function(){ alert("DIV1"); }); $("div2").click(function(){ alert("DIV2"); }); $(":button").click(function(){ alert("按钮"); });});
如果点击按钮将会依次触发3个事件:按钮点击事件=>div2点击事件=>div1点击事件
解决办法:
$(function(){ $("div1").click(function(event){ if(event.target==this){ }else{ alert("DIV1"); } }); $("div2").click(function(event){ if(event.target==this){ }else{ alert("DIV2"); } }); $(":button").click(function(){ alert("按钮"); });});
这时点击按钮将只触发按钮的点击事件
另一种解决办法:
$("#div1").click(function (event) { alert("DIV1"); }); $("#div2").click(function () { alert("DIV2"); }); $(":button").click(function (event) { alert("按钮"); event.stopPropagation(); });
该方法可以完全阻止事件冒泡。与.target类似,这个方法也是一种纯JavaScript特性,但在跨浏览器的环境中则无法安全地使用 。不过,只要我们通过jQuery来注册所有的事件处理程序
JS事件冒泡解决办法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。