2011-11-23 76 views
0

我无法使noConflict()方法正常工作。我一直在网上搜索几个小时,似乎无法得到一个坚实的答案。下面是我在我的头......如何正确实现jQuery noConflict()方法?

<script type="text/javascript" src="js/mootools.js"></script> 
<script type="text/javascript" src="js/slimbox.js"></script> 

<script type="text/javascript" src="js/jquery.js"></script><!-- jQuery script --> 
<script type="text/javascript" src="js/page_scroll.js"></script><!-- JavaScript --> 
<script src="js/jquery.easing.1.3.js" type="text/javascript"></script><!-- jQuery easing plug-in --> 

<script type="text/javascript"> 
    var $j = jQuery.noConflict(); 

    // Use jQuery via $j(...) 
    $j(document).ready(function(){ 
     $j("div").hide(); 
    }); 

    // Use Mootools with $(...), etc. 
    $('someid').hide(); 
</script> 

有没有其他的jQuery或JavaScript我的HTML中(只是我有什么外部),所以“把任何使用$变量在noConlict法”不一个选项。

基本上我想要做的是有slimbox和easing页面滚动(为我的导航)一起工作。当另一个被移除时,问题当然是有效的,反之亦然。另外,当我使用noConflict()方法时,我使slimbox工作而不是pagescroll,但是当我删除noConflict()方法时,我得到pagescroll工作而不是slimbox。因此,noConflict正在做的事情,我只是不知道那是什么或如何去做。

如果有人能帮助我,我会很感激。谢谢。

+0

谁编辑的问题,出了问题找到可靠的结果? jquery没有问题,mootools代码无效。当然,我对mooTools一无所知,但是$(id).setStyle('display','none');而不是hide()工作得很好... – Sinetheta

+0

@Purmou我认为你在编辑中有点过分...脚本标记对于这个问题是重要的。这个问题围绕着使用绑定到'$'的多个框架来加载插件。其中一个插件是做错了什么......现在这个问题没有任何意义。 –

+1

为什么在装载mo load时加载较少。也许加载原型,YUI和Dojo。 – Raynos

回答

0

那么你说这不起作用,当你声明$ j?您可以定义自己的备用名称(例如,jq,$ J,awesomeQuery - 任何您想要的)。尝试调用它的东西W/O的$

0

包装在一个匿名函数:

(function($){ 
    $(document).ready(function() { 
     // function here... 
    }); 
})(jQuery); 

看到确切的代码可能会有帮助。

使用其他JS库,充分利用$别名时
1

, 我以

$.noConflict(); 

jQuery(document).ready(function($) { 

    // your jQuery code here i.e. 

    // jQuery('some-selector-expression').somefunction(); 

}); 

// prototype or mootools code that uses the $ alias works fine here