281

最近、jQuery を 1.8 から 2.1 に更新しました。私は突然、が機能しなくなったことを発見し.live()ました。
エラーが発生しますTypeError: $(...).live is not a function

の代わりに使用できる方法はあります.live()か?

4

10 に答える 10

594

jQuery.live()はバージョン 1.9 以降で削除されました。

つまり、バージョン 1.8 以前からアップグレードする場合、以下の移行ガイドに従わないと問題が発生することに気付くでしょう。単純に!に置き換え.live()てはいけません。.on()


検索と置換を開始する前に、以下をお読みください。

ライブ サイトでのクイック/ホット フィックスの場合、パラメータが異なるため、キーワードを単に に置き換えないでください。liveon

.live(events, function)

次の場所にマップする必要があります。

.on(eventType, selector, function)

(子) セレクターは非常に重要です。何らかの理由でこれを使用する必要がない場合は、 に設定してnullください。


移行例 1:

前:

$('#mainmenu a').live('click', function)

その後、子要素 ( a) を.on()セレクターに移動します。

$('#mainmenu').on('click', 'a', function)

移行例 2:

前:

$('.myButton').live('click', function)

その後、要素 ( .myButton) を.on()セレクターに移動し、最も近い親要素 (できれば ID を使用) を見つけます。

$('#parentElement').on('click', '.myButton', function)

何を親にすればよいかわからない場合は、body常に機能します。

$('body').on('click', '.myButton', function)

以下も参照してください。

于 2013-01-16T08:30:51.077 に答える
20

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);
          }
      }
  });
}
于 2015-08-05T08:13:48.877 に答える
17

jQuery API ドキュメントにはlive()、バージョン 1.7 で非推奨となり、バージョン 1.9 で削除されたものがリストされています: link

非推奨のバージョン: 1.7、削除された: 1.9

さらに、次のように述べています。

jQuery 1.7 以降、.live() メソッドは非推奨になりました。.on()を使用して、イベント ハンドラーをアタッチします。古いバージョンの jQuery のユーザーは、.live() よりも.delegate()を使用する必要があります。

于 2013-01-16T08:27:15.073 に答える
7

.live() は廃止され、jQuery 1.9 から削除されました。.on()を使用する必要があります。

于 2013-01-16T08:27:22.583 に答える
6

.live は 1.9 で削除されました。アップグレード ガイドを参照してください: http://jquery.com/upgrade-guide/1.9/#live-removed

于 2013-01-16T08:27:29.527 に答える
6

コードを変更する必要がない非常に単純な修正で、jquery 移行スクリプトを追加するだけです。ここからダウンロードして ください https://github.com/jquery/jquery-migrate/

jquery は非推奨ですが、「ライブ」、「ブラウザ」などの必要な機能を提供します。

于 2015-05-07T07:20:29.207 に答える
3

サイトでこのエラーが発生すると、サイトの一部の機能が停止します。調査の結果、この問題の解決策が見つかりました。

$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)
于 2020-10-13T07:19:15.793 に答える
2

Ruby on Rails の jQuery gem を使用していてjquery-rails、何らかの理由でレガシー コードをリファクタリングできない場合、まだサポートされている最後のバージョンは で2.1.3あり、次の構文を で使用してロックできますGemfile

gem 'jquery-rails', '~> 2.1', '= 2.1.3'

その後、次のコマンドを使用して更新できます。

bundle update jquery-rails

同様の問題に直面している他の人を助けることを願っています。

于 2017-07-05T19:47:16.657 に答える