ラベルのクリックイベントにjqueryのバインドは二回ソリューションを引き起こしています

まず、次のコード(見ラベル包まれたチェックボックス

 

< DIV クラス= "例" > < ラベルのため= "chk_6" クラス= "ラベル1" >选项6 < 入力クラス= "chkbox-1" タイプ= "チェックボックス" ID = "chk_6" = "1" > </ ラベル> </ DIV > 
< DIV クラス= "例" > < ラベルのため= "chk_7" クラス= "ラベル1" > 7选项< 入力クラス=」chkbox-1" タイプ= "チェックボックス" ID = "chk_7"= "1" > </ ラベル> </ DIV > 
< DIV クラス= "例" > < ラベルのため= "chk_8" クラス= "ラベル1" >选项8 < 入力クラス= "chkbox-1" タイプ= "チェックボックス" ID = "chk_8" = "1" > </ ラベル> </ DIV > 
< DIV クラス= "例" > < ラベルのため= "chk_9"クラス= "ラベル-1" >选项9 < 入力クラス= "chkbox-1" タイプ= "チェックボックス" ID = "chk_9" = "1" > </ ラベル> </ DIV > 
< DIV クラス= "例" > < ラベルのため= "chk_10" クラス= "ラベル-1" >选项10 < 入力クラス= "chkbox-1" タイプ= "チェックボックス" ID = "chk_10" = "1" > </ ラベル> </ DIV >

 

 

// 結合した標識のクリックイベント 
    $(」。・ラベル。1' )。をクリックします(関数(E){
        console.log($(この)は.text());
    });

 

 

テキストをクリックして、私たちは現象を見つけるコンソールを観察!(コードが2回実行されます)

 

 

問題の原因:

イベントは一度バブリング時にラベルをクリックして、それが再びバブリングイベントをリードするクリックイベントの関連する入力をトリガーします

 

 溶液A(同じレベルで修飾HTML構造ラベル及びチェックボックス)。

 

< DIV クラス= "例" > < ラベルのため= "chk_1" クラス= "ラベル1" >选项1 </ ラベル> < 入力クラス= "chkbox-1" タイプ= "チェックボックス" ID = "chk_1" = "1" > </ DIV > 
< DIV クラス= "例" > < ラベルのため= "chk_2" クラス= "ラベル1" >选项2 </ ラベル> <入力クラス= "chkbox-1" タイプ= "チェックボックス"ID = "chk_2" = "1" > </ DIV > 
< DIV クラス= "例" > < ラベルのため= "chk_3" クラス= "ラベル1" >选项3 </ ラベル> < 入力クラス= "chkbox -1" タイプ= "チェックボックス" ID = "chk_3" = "1" > </ DIV > 
< DIV クラス= "例" > < ラベルchk_4 = ""クラス= "ラベル= 1" >オプション。4 </ ラベル> < 入力クラス= "chkbox-1" タイプ= "チェックボックス" ID = "chk_4" = "1" > </ DIV > 
< DIV クラス= "例" > < ラベルのため= "chk_5" クラス= "ラベル= 1" >选项5 </ ラベル> < 入力クラス= "chkbox-1" タイプ= "チェックボックス" ID = "chk_5" = "1" > </ DIV >

 

 

 

 、画面を更新し、テキストをクリックして、コンソールを守ってください。

 

 

 

 

 通常OK。

 

 

対処方法2(jsのコードを変更し、チェックボックスの変更イベントをバインドします):

    // バインディングチェックボックスの変更イベント 
    $(」。-Chkbox。1' )。変更します(関数(E){
        console.log($(この).parent()テキスト());
    });

 

 

 、画面を更新し、テキストをクリックして、コンソールを守ってください。

 

 

 

 

  通常OK。

 

第三の溶液(それは入力された場合、その後停止、イベントのソースを決定します)。

// 绑定ラベル的クリックの事件の 
    $(」ラベル-1' 。)(クリックしてください。関数の(e){
         場合($(e.target)が( "入力" .is ))
             のリターンを
        console.log($(この)は.text());
    });

 

 

 

 

 

解決策4:

いいえラベルん(最も簡単で直接的し、粗方法)

おすすめ

転載: www.cnblogs.com/yeminglong/p/11697493.html