0

を使用するいくつかの方法を見てきましたjQuery.noConflict。しかし、必ずしも必要ではないようです。

// define $
var $ = function() {
    alert("Hello World");
};

// use $ where it's not jQuery
$();

// 1
// jQuery.noConflict();
jQuery(document).ready(function($) {
    $('body').append("<p>foo</p>");
});

// 2
// jQuery.noConflict();
(function($) {
    $(function() {
        $('body').append("<p>foo</p>");
    });
})(jQuery);

// 3
// $.noConflict() here to tell jQuery to ignore $, but we're using *jQuery* when ready
jQuery(document).ready(function() {
    jQuery('body').append("<p>foo</p>");
});

// use $ where it's not jQuery
$();

必要なのjQuery.noConflictは、jQuery のエイリアスを定義するときだけです。

var j = jQuery.noConflict();
j(document).ready(function() {
    j('body').append("<p>foo</p>");
});

では、(エイリアスを作成する以外に)jQuery.noConflict()省略できないのはどのような状況ですか?

4

2 に答える 2

1

jQuery の単一バージョンがあり、互いに競合する可能性のあるフレームワークが使用されていない場合は、 jQuery.noConflict()を省略できます。

その他の一般的な JavaScript フレームワークには、MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman、および Ext JS があります。

他のフレームワークの中には、(jQuery と同様に) ショートカットとして $ 文字を使用するものもあり、突然 2 つの異なるフレームワークが同じショートカットを使用するようになり、スクリプトが機能しなくなる可能性があります。

jQuery チームはすでにこれを検討しており、noConflict() メソッドを実装しています。参照

JQuery ドキュメント内。

多くの JavaScript ライブラリは、jQuery と同様に $ を関数または変数名として使用します。jQuery の場合、$ は jQuery の単なるエイリアスであるため、すべての機能は $ を使用しなくても利用できます。jQuery と一緒に別の JavaScript ライブラリを使用する必要がある場合は、$.noConflict() を呼び出して、$ の制御を他のライブラリに戻します。$ の古い参照は、jQuery の初期化中に保存されます。noConflict() は単にそれらを復元します。参照

于 2013-03-28T06:05:48.577 に答える
1

多くの JavaScript ライブラリは、jQuery と同様に $ を関数または変数名として使用します。jQuery の場合、$ は単なる jQuery のエイリアスであるため、すべての機能は $ を使用しなくても利用できます。

jQuery と一緒に別の JavaScript ライブラリを使用する必要がある場合は、$.noConflict() を呼び出して、$ の制御を他のライブラリに戻します。$ の古い参照は、jQuery の初期化中に保存されます。noConflict() は単にそれらを復元します。

于 2013-03-28T06:13:27.467 に答える