e.StopPropagation()を使用できる場合があります。 E.PreventDefault();イベントが泡立っているのを防ぎ、デフォルトのイベントの実行を防ぐため。しかし、イベントの追加を防ぐことはできません。
どのような状況でイベントの追加を防ぐ必要がありますか?
例えば:
[チェックアウト]をクリックします。これを操作する場合、チェックアウト自体に独自のイベントがありますが、チェックアウトする前にログインするかどうかを判断する必要があります。
これを書くかもしれません:
JSコード
コードコピーは次のとおりです。
if(islogin){//ログインするかどうかを判断します
console.log( "ログインなし")
}それ以外{
//関連するコードをチェックアウトします
}
「私のホームページ」をクリックすると、ログイン判断も行われます
ログイン判断コード
if(islogin){//ログインするかどうかを判断します
console.log( "ログインなし")
}それ以外{
//パーソナルセンター
}
より多くのログイン判断がある場合。上記のようなコードのようなコードはありますか?その後、StopimmediatePropagation()メソッドがイベントのアプリを防ぐことを発見しました。上記の質問は問題ではありません。
重要:ログインがイベントが最初のバウンドイベントであると判断していることを確認してください。
デモコード
コードコピーは次のとおりです。
<!doctype html>
<html>
<head lang = "en">
<メタcharset = "utf-8">
<title> demo </title>
<スクリプトsrc = "http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"> </script>
</head>
<body>
<a href = "#"> checkout </a>
<ul>
<li>お気に入りに追加</li>
<li>その他の支払い</li>
<li>車の購入に追加</li>
<li>私のホームページ</li>
</ul>
<スクリプト>
//最初にバインドします
$( "。ISLOGIN")。
if(true){// Judgectをログインします
アラート( "ログインなし");
e.StopimMediatePropagation();
}
falseを返します。
});
$( "。bill")。on( "click"、function(){
Alert( "Checkout関連コンテンツ!");
});
$( "。a1")。on( "click"、function(){
アラート( "a1");
});
$( "。a2")。on( "click"、function(){
アラート( "a2");
});
$( "。a3")。on( "click"、function(){
アラート(「カートに追加」);
});
$( "。a4")。on( "click"、function(){
アラート(「ログイン判断があります」);
});
</script>
</body>
</html>
実際、jQueryは、イベント$ ._データ($('。ISLOGIN ')を表示する方法を提供します。
JSコード
$ ._データ($('。ISLOGIN ')。get(0)))
以下が表示されます。
JSコード
object {events = {...}、handle = function()}
クリックしてイベントアレイを表示して、要素にどのようなイベントがバインドされているかを表示します。