js阻止冒泡及jquery阻止事件冒泡樣本介紹

來源:互聯網
上載者:User

標籤:style   http   io   java   ar   strong   div   cti   sp   

js阻止冒泡
在阻止冒泡的過程中,W3C和IE採用的不同的方法,那麼我們必須做以下相容。

複製代碼 代碼如下:
function stopPro(evt){
var e = evt || window.event;
//returnValue如果設定了該屬性,它的值比事件控制代碼的傳回值優先順序高。把這個屬性設定為 fasle,
//可以取消發生事件的源元素的預設動作。
//window.event?e.returnValue = false:e.preventDefault();
window.event?e.cancelBubble=true:e.stopPropagation();
}


或者:

複製代碼 代碼如下:
function cancelBubble(e) {
var evt = e ? e : window.event;
if (evt.stopPropagation) {
//W3C
evt.stopPropagation();
}
else {
//IE
evt.cancelBubble = true;
}

 
JQuery 提供了兩種方式來阻止事件冒泡。
方式一:event.stopPropagation();

複製代碼 代碼如下:
$("#div1").mousedown(function(event){
event.stopPropagation();
});


方式二:return false;

複製代碼 代碼如下:
$("#div1").mousedown(function(event){
return false;
});


Jquery阻止預設動作即通知瀏覽器不要執行與事件關聯的預設動作。
例如:

複製代碼 代碼如下:
$("a").click(function(event){
event.preventDefault(); //阻止預設動作即該連結不會跳轉。
alert(4);//但是這個還會彈出
event.stopPropagation();//阻止冒泡事件,上級的單擊事件不會被調用
return false;//不僅阻止了事件往上冒泡,而且阻止了事件本身
});


但是這兩種方式是有區別的。return false 不僅阻止了事件往上冒泡,而且阻止了事件本身。event.stopPropagation() 則只阻止事件往上冒泡,不阻止事件本身。
情境應用:Google 和 百度的聯想框,當彈出下拉式清單,使用者在下拉式清單地區按下滑鼠時需要讓游標仍然保持在文本輸入框。
Jquery案例:

複製代碼 代碼如下:
<script src="js/jquery-1.4.3.js"></script>
<script type="text/javascript">
$(function(){
$("#aa").click(function(event){
alert("aa");
event.preventDefault();
event.stopPropagation();
alert(3);
});
$("#ee").click(function(){
alert("ee");
});
$("a").click(function(event){
event.preventDefault();
alert(4);
event.stopPropagation();
return false;
});
});
</script>
</head>
<body>
<div id="ee">
aaaaaaa
<input id="aa" type="button" value="test" />
<a href="http://baidu.com">baidu.com</a>
</div>
</body>


js案例:

複製代碼 代碼如下:


function tt(){
alert("div");
}
function ttt(){
var e = arguments.callee.caller.arguments[0] || window.event;
window.event?e.returnValue = false:e.preventDefault();
alert(3);
window.event?e.cancelBubble:e.stopPropagation();
alert(4);
}
</script>
</head>
<body>
<div onclick = "tt();">
ccccc
<a href="http://baidu.com" onclick="ttt();">baidu.com</a>
</div>

js阻止冒泡及jquery阻止事件冒泡樣本介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.