4

次のようにevent.target.nodeNameを確認しようとしています。

$("input").click(function(e){
    if(e.target.nodeName == "LABEL") {
       alert('label click');
        e.preventDefault();
    } else {
       alert($(this).attr('checked') ? 'checked': 'unchecked');
    }
});

しかし、名前がラベルと同じになることはありませんか?私は何が間違っているのですか?

クイックjsfiddle

4

3 に答える 3

5

label)要素を選択する必要があります。現在、クリックハンドラーの唯一のターゲットは、入力要素です。

$("label").click(function(e){
  // ...
})

http://jsfiddle.net/j7nSq/

于 2012-09-24T21:43:07.673 に答える
2

これが機能しない理由は、入力をクリックした場合にのみ実行されるためだと思います。

  if(e.target.nodeName == "LABEL") {
于 2012-09-24T21:47:01.893 に答える
1

ラベルをまったく選択していません。最初にラベルを選択して、再試行してください。

ここで間違った要素をヒットしています。

$('label').on('click', function(e) {
    // Your logic here

});

入力をクリックする代わりに。

を使用してイベントを委任してください.on()

于 2012-09-24T21:45:27.297 に答える