まず、次のコード(見ラベル包まれたチェックボックス)
< 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:
いいえラベルん(最も簡単で直接的し、粗方法)