首頁 > web前端 > js教程 > 主體

js阻止事件追加的具體實作方法

怪我咯
發布: 2017-07-06 11:35:39
原創
1862 人瀏覽過

可以使用 e.stopPropagation(); e.preventDefault();來阻止事件冒泡,和預設事件的執行。但不能阻止事件的追加,如要追加,請看下面的實作方法

有些時候可以使用e.stopPropagation(); e.preventDefault();來阻止事件冒泡,和預設事件的執行。但不能阻止事件的追加。

什麼情況下要阻止事件的追加呢?

例如:

點擊“結帳”,這樣的操作時,結帳本身有自己的事件,但結帳前要判斷是否登入。

我們可能會這樣寫:

Js程式碼

程式碼如下:

if(isLogin){ //判断是否登录 
console.log("没有登录") 
}else{ 
//结账相关代码 
}
如果点击“我的主页”也有登录判断
登录判断代码
if(isLogin){ //判断是否登录 
console.log("没有登录") 
}else{ 
//个人中心 
}
登入後複製

如果還有更多的登入判斷。是不是就會有更多像上面的程式碼呢?後來我發現stopImmediatePropagation()這個方法, 阻止事件追加。上面的問題就不是問題了。

重要:.確保登入判斷事件是第一個綁定的事件。

Demo程式碼

程式碼如下:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>demo</title> 
<script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script> 
</head> 
<body> 

<a href="#" class="bill isLogin">结账 </a> 


<ul> 
<li class="a1 isLogin">加入收藏夹</li> 
<li class="a2 isLogin">他人支付</li> 
<li>加入购入车</li> 
<li class="a4 isLogin">我的主页</li> 
</ul> 

<script> 
//最先绑定 
$(".isLogin").on("click", function (e) { 

if(true){ //登录判断 
alert("没有登录"); 
e.stopImmediatePropagation(); 
} 

return false; 
}); 

$(".bill").on("click",function(){ 
alert("结账相关内容!"); 
}); 

$(".a1").on("click",function(){ 
alert("a1"); 
}); 

$(".a2").on("click",function(){ 
alert("a2"); 
}); 

$(".a3").on("click",function(){ 
alert("已加入购物车"); 
}); 

$(".a4").on("click",function(){ 
alert("有登录判断"); 
}); 


</script> 
</body> 
</html>
登入後複製

其實,jquery給我們提供了查看事件的方法$._data($('.isLogin'). get(0)),開啟firebug,在控制台輸入。
Js程式碼

$._data($('.isLogin').get(0))

會看到如下:

Js程式碼

Object { events={...}, handle=function()}

點擊可以看到事件陣列,方便查看元素上綁定什麼樣的事件。

以上是js阻止事件追加的具體實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板