0

これは chrome や jQuery のバグなのだろうか、それとも .live 関数の使い方を誤解しているのだろうか

$('.input_form input[type="radio"]').live({
    'change':function(){
        console.log("this is a radio button");
    }
});

上記のコードは、すべての主要なブラウザーで「input_form」クラスのラジオ ボタンをクリックすると、コンソール ウィンドウに出力を送信します。

ただし、次のコード:

$('.input_form input[type="radio"]').live({
    'focus':function(){
        console.log("this is a radio button");
    }
});

google chrome (10) を除くすべてのブラウザーのコンソール ウィンドウに出力を送信します。

唯一の違いは、イベント トリガーが「change」から「focus」に変更されたことです。

誰か光を当てることができますか?

4

3 に答える 3

1

jQuery 1.7+ を使用している場合は、おそらく次のようにする必要があります。

$(document).on({
    change: function(){
        console.log("this is a radio button on change");
    },
    focus: function() {
        console.log("this is a radio button on focus");
    }
}, '.input_form input[type="radio"]');

まだライブを使用していて、マップが必要ない場合は、次のようにします。

$('.input_form input[type="radio"]').live('focus', function(){
    console.log("this is a radio button");
});

または地図で:

$('.input_form input[type="radio"]').live({
    focus: function(){
        console.log("this is a radio button");
    }
});

Webkit では、タブを使用している場合にのみ、クリック時にラジオ ボタンに自動的にフォーカスが与えられません。ただし、要素にフォーカスを設定することはできますが、なぜこのようにするのかは私にはわかりませんが、可能です:

$(document).on({
    click: function(){
        console.log("this is a radio button on click");
        $(this).focus();
    },
    focus: function() {
        console.log("this is a radio button on focus");
    }
}, '.input_form input[type="radio"]');

フィドル

于 2012-04-09T11:52:13.673 に答える
0

よくわかりませんが、focusinの代わりに使用する必要があると思いますfocus

$('.input_form input[type="radio"]').live({
    'focusin': function(){
        console.log("this is a radio button");
    }
});

少なくともしばらく前は、とfocusinを処理するための正規化されたイベントでした。livefocus

そしてblurと呼ばれるfocus out


ノート:

focusinイベントは、その要素またはその中の要素がフォーカスを取得したときに要素に送信されます。これは、親要素でのフォーカスイベントの検出をサポートする(つまり、イベントバブリングをサポートする)という点でフォーカスイベントとは異なります。

于 2012-04-09T11:56:31.083 に答える
0

この質問 [1] を確認してください。クロムとサファリのラジオ ボタンではフォーカス イベントが発生しないと記載されています。

[1] https://stackoverflow.com/a/5744926/1317080

于 2012-04-09T12:19:49.340 に答える