已解决:删除所有对noconflict的引用修复了问题
我有2个脚本(第A部分和第B部分),它们完全可以在那里完成2个单独的任务。当我把它们放在一页上时,一个取消另一个。任何帮助表示感谢。
// 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();
});
答案 0 :(得分:1)
在另一个函数调用中包装B部分以替换$
变量:
(function($) {
// Part B
})(jQuery);
答案 1 :(得分:0)
jQuery.noConflict() - 调用在初始化jQuery之前将全局变量$ assignment返回到其原始定义。例如,您可能在页面上加载了另一个库/方法/属性,用于在$中存储对自身的引用。因此,部分B中使用的所有特定于jQuery的方法都需要在变量$ j而不是$。
上调用正如Joe Frambach所回答:你可以将B部分代码包装在一个方法中,该方法将jQuery Object传递给一个定义为" $"的参数。这就是原因:
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特定上下文编写的集成(外部)脚本,因为实现可能需要一些工作。