js阻止冒泡及jquery阻止事件冒泡示例介紹
更新時間:2013年11月19日 15:40:35 作者:
JQuery 提供了兩種方式來阻止事件冒泡,Jquery阻止默認動作即通知瀏覽器不要執(zhí)行與事件關(guān)聯(lián)的默認動作,下文有個不錯的示例,需要的朋友可以參考下
js阻止冒泡
在阻止冒泡的過程中,W3C和IE采用的不同的方法,那么我們必須做以下兼容。
function stopPro(evt){
var e = evt || window.event;
//returnValue如果設置了該屬性,它的值比事件句柄的返回值優(yōu)先級高。把這個屬性設置為 fasle,
//可以取消發(fā)生事件的源元素的默認動作。
//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阻止默認動作即通知瀏覽器不要執(zhí)行與事件關(guān)聯(lián)的默認動作。
例如:
$("a").click(function(event){
event.preventDefault(); //阻止默認動作即該鏈接不會跳轉(zhuǎn)。
alert(4);//但是這個還會彈出
event.stopPropagation();//阻止冒泡事件,上級的單擊事件不會被調(diào)用
return false;//不僅阻止了事件往上冒泡,而且阻止了事件本身
});
但是這兩種方式是有區(qū)別的。return false 不僅阻止了事件往上冒泡,而且阻止了事件本身。event.stopPropagation() 則只阻止事件往上冒泡,不阻止事件本身。
場景應用:Google 和 百度的聯(lián)想框,當彈出下拉列表,用戶在下拉列表區(qū)域按下鼠標時需要讓光標仍然保持在文本輸入框。
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 >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 onclick="ttt();">baidu.com</a>
</div>
在阻止冒泡的過程中,W3C和IE采用的不同的方法,那么我們必須做以下兼容。
復制代碼 代碼如下:
function stopPro(evt){
var e = evt || window.event;
//returnValue如果設置了該屬性,它的值比事件句柄的返回值優(yōu)先級高。把這個屬性設置為 fasle,
//可以取消發(fā)生事件的源元素的默認動作。
//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阻止默認動作即通知瀏覽器不要執(zhí)行與事件關(guān)聯(lián)的默認動作。
例如:
復制代碼 代碼如下:
$("a").click(function(event){
event.preventDefault(); //阻止默認動作即該鏈接不會跳轉(zhuǎn)。
alert(4);//但是這個還會彈出
event.stopPropagation();//阻止冒泡事件,上級的單擊事件不會被調(diào)用
return false;//不僅阻止了事件往上冒泡,而且阻止了事件本身
});
但是這兩種方式是有區(qū)別的。return false 不僅阻止了事件往上冒泡,而且阻止了事件本身。event.stopPropagation() 則只阻止事件往上冒泡,不阻止事件本身。
場景應用:Google 和 百度的聯(lián)想框,當彈出下拉列表,用戶在下拉列表區(qū)域按下鼠標時需要讓光標仍然保持在文本輸入框。
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 >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 onclick="ttt();">baidu.com</a>
</div>
相關(guān)文章
form表單數(shù)據(jù)封裝成json格式并提交給服務器的實現(xiàn)方法
下面小編就為大家分享一篇form表單數(shù)據(jù)封裝成json格式并提交給服務器的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12javascript仿163網(wǎng)盤無刷新文件上傳系統(tǒng)
這個仿163網(wǎng)盤無刷新文件上傳系統(tǒng),并沒有用使用.net的控件,完全的手工制作。2008-10-10