国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js阻止事件追加的具體實現

2024-05-06 16:09:41
字體:
來源:轉載
供稿:網友
可以使用 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 lang="en"> 
<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 class="a3">加入購入車</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()}

點擊可以看到事件數組,方便查看元素上綁定了什么樣的事件。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 城市| 志丹县| 弋阳县| 洞头县| 新津县| 凭祥市| 枞阳县| 南充市| 车致| 河曲县| 麻江县| 民丰县| 江华| 凌云县| 德阳市| 林州市| 阿尔山市| 西吉县| 龙泉市| 左权县| 类乌齐县| 山东省| 金门县| 岳阳县| 城市| 屏边| 修水县| 阳江市| 东海县| 清徐县| 兰西县| 运城市| 盐亭县| 沈阳市| 拜城县| 呼和浩特市| 灵台县| 汶上县| 桑日县| 家居| 鄂托克旗|