0

解決済み: noconflict へのすべての参照を削除すると、問題が修正されました

私は 2 つのスクリプト (PART A と PART B) を持っており、2 つの別々のタスクを実行するために完全に動作します。両方を1つのページに配置すると、一方が他方をキャンセルします。助けていただければ幸いです。

// PART A
var $j = jQuery.noConflict();
jQuery(function ($j) {

var image_slides = [];

image_slides.push({
image: 'img/background.jpg'
})

$j.supersized({

min_width: 0,
min_height: 0,
vertical_center: 1,
horizontal_center: 1,
fit_always: 0,
fit_portrait: 1,
fit_landscape: 0,
slides: image_slides,
});
}); 

// PART B
function cent() {
var $block = $("#block"),
    margintop = parseInt($block.height() / -2);
console.log('called');
$('#block').css("margin-top", margintop);
};

$(document).ready(function(){
cent();
});
$(window).resize(function(){
cent();
});
4

2 に答える 2

1

パート B を別の関数呼び出しでラップして、$変数を置き換えます。

(function($) {
    // Part B
})(jQuery);
于 2013-06-12T14:46:18.267 に答える
0

jQuery.noConflict() 呼び出しは、グローバル変数 $ 割り当てを、jQuery が初期化される前の元の定義に戻します。たとえば、別のライブラリ / メソッド / プロパティをページにロードして、それ自体への参照を $. したがって、パート B で使用されるすべての jQuery 固有のメソッドは、$ ではなく変数 $j で呼び出す必要があります。

Joe Frambach が答えたように、「$」として定義された引数に jQuery オブジェクトを渡すメソッド内にパート B コードをラップできます。理由は次のとおりです。

var $j = jQuery.noConflict(); // return reference of $ to original assignment

// calls to $ here are made in the global namespace, and not invoked on jQuery
// due to the noConflict-invocation above

(function( $ ) {

     // all calls to $ inside this function body are now invoked on jQuery as
     // jQuery is passed as an argument and we're now referencing a local namespace

})( jQuery );

// outside of the above function body calls to $ are made on the global namespace
// and thus not invoked on jQuery due to noConflict-invocation

「noConflict」を使用する場合は、jQuery 固有のコンテキスト用に作成された (外部) スクリプトを統合することに注意してください。実装には何らかの作業が必要になる可能性があります。

于 2013-06-12T15:01:23.897 に答える