ホームページ >ウェブフロントエンド >jsチュートリアル >イベントのappending_javascriptスキルを防止するjsの特定の実装

イベントのappending_javascriptスキルを防止するjsの特定の実装

WBOY
WBOYオリジナル
2016-05-16 16:34:031290ブラウズ

e.stopPropagation(); e.preventDefault(); を使用して、イベントのバブリングとデフォルト イベントの実行を防ぐことができます。ただし、イベントの追加を防ぐことはできません。

どのような状況ではイベントの追加を禁止する必要がありますか?

例:

「チェックアウト」をクリックします。これを行うと、チェックアウト自体に独自のイベントが発生しますが、チェックアウトする前にログインするかどうかを決定する必要があります。

次のように書くとよいでしょう。

JSコード

コードをコピー コードは次のとおりです:

if(isLogin){ //ログインするかどうかを決定
console.log("ログインしていません")
}その他{
// チェックアウト関連のコード
}

「My Homepage」をクリックするとログインチェックもあります
ログイン判定コード

if(isLogin){ //ログインするかどうかを決定します
console.log("ログインしていません")
}その他{
//パーソナルセンター
}


判断するログインがさらにある場合。上記のようなコードはさらに増えるのでしょうか?その後、イベントが追加されないようにする stopImmediatePropagation() メソッドを発見しました。上記の問題はもう問題ありません。

重要: ログイン判定イベントが最初にバインドされたイベントであることを確認してください。

デモコード

コードをコピー コードは次のとおりです:


<メタ文字セット="UTF-8"> デモ <スクリプト src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js">


チェックアウト


  • お気に入りに追加
  • 他人による支払い
  • カートに追加
  • マイホームページ


  • <スクリプト>
    //最初にバインドします
    $(".isLogin").on("click", function (e) {

    if(true){ //ログイン判定
    アラート("ログインしていません"); e.stopImmediatePropagation(); }

    false を返します
    });

    $(".bill").on("click",function(){
    alert("関連コンテンツをチェックしてください!"); });

    $(".a1").on("クリック",function(){
    アラート("a1"); });

    $(".a2").on("クリック",function(){
    アラート("a2"); });

    $(".a3").on("クリック",function(){
    アラート("カートに追加されました"); });

    $(".a4").on("クリック",function(){
    alert("ログイン判定"); });







    実際、jquery は、イベントを表示し、firebug を開いてコンソールに入力するためのメソッド $._data($('.isLogin').get(0)) を提供します。
    JSコード

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

    次の内容が表示されます:

    JSコード

    オブジェクト { events={...}, handle=function()}

    クリックするとイベント配列が表示され、どのイベントが要素にバインドされているかを簡単に確認できます。
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。