最近、jQuery を 1.8 から 2.1 に更新しました。私は突然、が機能しなくなったことを発見し.live()
ました。
エラーが発生しますTypeError: $(...).live is not a function
。
の代わりに使用できる方法はあります.live()
か?
最近、jQuery を 1.8 から 2.1 に更新しました。私は突然、が機能しなくなったことを発見し.live()
ました。
エラーが発生しますTypeError: $(...).live is not a function
。
の代わりに使用できる方法はあります.live()
か?
.live()
はバージョン 1.9 以降で削除されました。つまり、バージョン 1.8 以前からアップグレードする場合、以下の移行ガイドに従わないと問題が発生することに気付くでしょう。単純に!に置き換え.live()
てはいけません。.on()
ライブ サイトでのクイック/ホット フィックスの場合、パラメータが異なるため、キーワードを単に に置き換えないでください。live
on
.live(events, function)
次の場所にマップする必要があります。
.on(eventType, selector, function)
(子) セレクターは非常に重要です。何らかの理由でこれを使用する必要がない場合は、 に設定してnull
ください。
前:
$('#mainmenu a').live('click', function)
その後、子要素 ( a
) を.on()
セレクターに移動します。
$('#mainmenu').on('click', 'a', function)
前:
$('.myButton').live('click', function)
その後、要素 ( .myButton
) を.on()
セレクターに移動し、最も近い親要素 (できれば ID を使用) を見つけます。
$('#parentElement').on('click', '.myButton', function)
何を親にすればよいかわからない場合は、body
常に機能します。
$('body').on('click', '.myButton', function)
for jQuery >= 1.9の転送ポート.live()
JS の依存関係のリファクタリングを回避し.live()
ます 最適化された DOM セレクター コンテキストを使用 します
/**
* Forward port jQuery.live()
* Wrapper for newer jQuery.on()
* Uses optimized selector context
* Only add if live() not already existing.
*/
if (typeof jQuery.fn.live == 'undefined' || !(jQuery.isFunction(jQuery.fn.live))) {
jQuery.fn.extend({
live: function (event, callback) {
if (this.selector) {
jQuery(document).on(event, this.selector, callback);
}
}
});
}
jQuery API ドキュメントにはlive()
、バージョン 1.7 で非推奨となり、バージョン 1.9 で削除されたものがリストされています: link。
非推奨のバージョン: 1.7、削除された: 1.9
さらに、次のように述べています。
jQuery 1.7 以降、.live() メソッドは非推奨になりました。.on()を使用して、イベント ハンドラーをアタッチします。古いバージョンの jQuery のユーザーは、.live() よりも.delegate()を使用する必要があります。
.live() は廃止され、jQuery 1.9 から削除されました。.on()を使用する必要があります。
.live は 1.9 で削除されました。アップグレード ガイドを参照してください: http://jquery.com/upgrade-guide/1.9/#live-removed
コードを変更する必要がない非常に単純な修正で、jquery 移行スクリプトを追加するだけです。ここからダウンロードして ください https://github.com/jquery/jquery-migrate/
jquery は非推奨ですが、「ライブ」、「ブラウザ」などの必要な機能を提供します。
サイトでこのエラーが発生すると、サイトの一部の機能が停止します。調査の結果、この問題の解決策が見つかりました。
$colorpicker_inputs.live('focus', function(e) {
jQuery(this).next('.farb-popup').show();
jQuery(this).parents('li').css( {
position : 'relative',
zIndex : '9999'
})
jQuery('#tabber').css( {
overflow : 'visible'
});
});
$colorpicker_inputs.live('blur', function(e) {
jQuery(this).next('.farb-popup').hide();
jQuery(this).parents('li').css( {
zIndex : '0'
})
});
「ライブ」を「オン」に置き換える必要があります。以下を確認してください
$colorpicker_inputs.on('focus', function(e) {
jQuery(this).next('.farb-popup').show();
jQuery(this).parents('li').css( {
position : 'relative',
zIndex : '9999'
})
jQuery('#tabber').css( {
overflow : 'visible'
});
});
$colorpicker_inputs.on('blur', function(e) {
jQuery(this).next('.farb-popup').hide();
jQuery(this).parents('li').css( {
zIndex : '0'
})
});
以下のもう 1 つの基本的な例:
.live(event, selector, function)
次のように変更します。
.on(event, selector, function)
Ruby on Rails の jQuery gem を使用していてjquery-rails
、何らかの理由でレガシー コードをリファクタリングできない場合、まだサポートされている最後のバージョンは で2.1.3
あり、次の構文を で使用してロックできますGemfile
。
gem 'jquery-rails', '~> 2.1', '= 2.1.3'
その後、次のコマンドを使用して更新できます。
bundle update jquery-rails
同様の問題に直面している他の人を助けることを願っています。