ホームページ > 記事 > ウェブフロントエンド > jsでのイベント追加を防ぐ具体的な実装方法
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 コード
$._data($('.isLogin').get(0))
以下が表示されます:
Js コード
Object{ events={...}, handle= function ()}クリックするとイベント
配列が表示され、どのイベントが要素にバインドされているかを簡単に確認できます。
以上がjsでのイベント追加を防ぐ具体的な実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。