IE ではなく Firefox で動作しますか?
両方のブラウザが同じソースをロードしていることを確認します。正直なところ、.on
jQuery 1.6 を使用しているときに Firefox で使用するのは少し無理です。メソッドが存在しないからです。
コンソール (IE では F12 開発者ツール、Firefox では Firebug) 内で次のように入力します。
jQuery.fn.jquery
これにより、その特定のページにロードされた jQuery の現在のバージョンが返されます。たとえば、今日の時点で、ここでそのコマンドを StackOverflow で実行すると、"1.7.1"
. 次に、メソッドの存在をテストするために、.on
二重否定を使用して真のブール値にキャストし、括弧なしでメソッドにアクセスできます。
!!jQuery.fn.on // True if .on is present, False otherwise
jQuery 1.6 では、.on ではなく .delegate を使用します
.on
jQuery 1.6 を使用しているため、jQuery 1.7 で導入されたメソッドにアクセスできません。適切なフォールバックは、代わりにメソッドを使用することです。または、最新バージョンの jQuery ( Microsoft CDN、Google CDN、jQuery CDN.delegate
)にアップグレードすることもできます。
の構文は、 の構文.delegate
に.on
非常によく似ています。
$("#dropdownval").delegate("select", "change", function(event){
alert( $(this).val() );
});
フィドル: http://jsfiddle.net/jonathansampson/rMBn4/
アップグレードすることにした場合...
コードに近かったが.on
、イベントをオブジェクトまでバインドしたくないdocument
場合 - これは、イベントが処理される前に潜在的に長い距離を伝播する必要があることを意味します。代わりに、.delegate
例で行ったように、select 要素に近いものにバインドします。
$("#dropdownval").on("change", "select", function(event){
alert( $(this).val() );
});
フィドル: http://jsfiddle.net/jonathansampson/rMBn4/1/
2 つの主な違いは、連鎖メソッドに対する最初の 2 つのパラメーターの順序であることに注意してください。では.delegate
、セレクターがイベントの前に置かれます。では.on
順序が逆になります。