e.stopPropagation(); e.preventDefault();를 사용하면 이벤트가 버블링되고 기본 이벤트가 실행되는 것을 방지할 수 있습니다. 하지만 이벤트 추가를 방지할 수는 없습니다. 아래 구현 방법을 참조하세요
경우에 따라 e.stopPropagation(); e.preventDefault();를 사용하여 이벤트 버블링 및 기본 이벤트 실행을 방지할 수 있습니다. 하지만 이벤트가 추가되는 것을 막을 수는 없습니다.
어떤 상황에서 이벤트 추가를 막아야 할까요?
예:
"결제"를 클릭하면 결제 자체에 이벤트가 발생하지만 결제하기 전에 로그인 여부를 결정해야 합니다.
다음과 같이 작성할 수 있습니다.
Js 코드
코드는 다음과 같습니다.
if(isLogin){ //判断是否登录 console.log("没有登录") }else{ //结账相关代码 } 如果点击“我的主页”也有登录判断 登录判断代码 if(isLogin){ //判断是否登录 console.log("没有登录") }else{ //个人中心 }
로그인 판단이 더 많은 경우. 위와 같은 코드가 더 많이 나올까요? 나중에 이벤트가 추가되는 것을 방지하는 stopImmediatePropagation() 메서드를 발견했습니다. 위의 문제는 더 이상 문제가 되지 않습니다.
중요: 로그인 판단 이벤트가 첫 번째 바운드 이벤트인지 확인하세요.
데모 코드
코드는 다음과 같습니다.
<!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)), open firebug을 제공합니다. , 그리고 콘솔에 입력합니다.
Js code
$._data($('.isLogin').get(0))
다음과 같이 표시됩니다.
Js code
Object { events={...}, handler= function ()}
이벤트 array를 보려면 클릭하세요. 요소에 어떤 이벤트가 바인딩되어 있는지 쉽게 확인할 수 있습니다.
위 내용은 js에 이벤트 추가를 방지하는 구체적인 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!