1

focusin eventjquery 1.5.2を使用して将来の要素にアタッチしようとしています。明確にするために、これは同じ問題でjQuery 1.7.2を使用して試みられました。

期待どおりにイベントが発生しません。それでも、同様のクリックイベントは正しく機能します.live

私のコードを見てもらうために、ここに例をまとめました。うまくいけば、これは単純な問題ではありません (常にそうであるように見えますが!)。

jsfiddle へのリンク

これは、アタッチしようとしている私の focusin イベントです

$(".active").live("focusin", function() {
    $(this).text("focusin using live");
});

関連する質問がいくつか見つかったと思いますが、それらを使用してコードを修正できません。「これがコード修正された回答です」よりも説明を希望します。

私の質問にさらに情報を追加する必要があると思われる場合は、コメントを残してください。

関連している

jQuery focusin および focusout ライブ イベントが発生しない

「focusin」イベントハンドラが呼び出されないのはなぜですか?

4

1 に答える 1

1

focusinイベントがトリガーされることが予想される場合は、要素にフォーカスする必要があります。クラスにDOM要素を適用しているという事実は、.activeそれに焦点を当てているという意味ではありません。

$('.active').live('focusin', function() {
    $(this).text('focusin using live');
});

$('.active').focus();
​

ここにデモがあります。

もう 1 つの注目すべき点は、jQuery 1.7.1 以降.live()のイベントをサポートしていることです。focusin明らかに、このバージョンの jQuery では.live()非推奨であり、次を使用する必要があります.on()

$(document).on('focusin', '.active', function() {
    $(this).text('focusin using on');
});

$('.active').focus();

</p>

于 2012-07-08T10:52:06.623 に答える