核心提示:js停止冒泡W3C/ jquery阻止冒泡的方式:event.stopPropagation() IE:event.cancelBubble=true 兼容性写法window.event ? wind...
js停止冒泡
W3C/ jquery阻止冒泡的方式:event.stopPropagation() IE:
event.cancelBubble=true 兼容性写法
window.event ? window.event.cancelBubble=true : event.stopPropagation;
stopPropagation()/cancelBubble=true 可以阻止事件冒泡,但不会阻止浏览器的默认行为.
例子
<p id="p" onclick="alert('p')"> <ul onclick="alert('ul')"> <li>test</li> </ul> </p> <script type="text/javascript"> document.getElementsByTagName('li')[0].onclick = function (event) { alert('li') // 阻止冒泡 var event = event || window.event; event ? event.cancelBubble=true : event.stopPropagation(); } </script>
js阻止默认行为
w3c / jquery阻止默认行为 : event.preventDefault() IE: evevt.returnValue=false; 兼容性写法event.preventDefault() ? event.preventDefault() : evevt.returnValue=false;
例子
<a href="https://www.baidu.com" id="test">www.baidu.com</a> <script type="text/javascript"> var baidu = document.getElementById('test'); baidu.onclick = function (event) { var event = event || window.event; event.preventDefault ? event.preventDefault() : event.returnValue=false; } </script>
return false
js事件中return false只会组织默认行为 jquery事件中return false可以阻止冒泡和默认行为<p id="p" onclick="alert('p')"> <ul onclick="alert('ul')"> <li id="li_a" onclick="alert('li_a')"> <a href="https://www.baidu.com" id="test">baidu</a> </li> </ul> </p> <script src="https://cdn.bootcss.com/jquery/3.1.0/jquery.min.js" charset="utf-8"></script> <script type="text/javascript"> //js var a = document.getElementById('test'); a.onclick = function () { return false; //阻止默认行为 } //jquery $('#test').click(function () { return false; //阻止冒泡和默认行为 }) </script>