如何使用jquery.noConflict属性

时间:2009-09-08 04:22:33

标签: jquery

我正在使用预览dns在服务器上测试我的网页。刚刚意识到预览dns会自动将mootools库添加到任何php页面的末尾。可能是他们自己的统计数据。

但问题是我在我的页面中使用jquery。所以我的jquery代码断了,因为mootools和jquery都使用'$'。

我已将页面的所有页面源都放在jsbin上:http://jsbin.com/ozime(这包括在mootools上添加的内容)。

在这个页面中,我添加了一个示例jquery代码,该代码应该在更改下拉框时触发。我还添加了一些警告声明。但是,只显示第一个警报声明。一个内部jquery代码没有。

我试过使用jquery没有冲突,但似乎没有用。

有人遇到过这个问题吗?

4 个答案:

答案 0 :(得分:21)

我更喜欢使用自动执行匿名函数来为你的jQuery代码提供自己的范围,你可以像往常一样使用$,如果你不必担心兼容性。

如果您以前没见过,这看起来会很奇怪。基本上,我所做的是定义一个带有参数($)的函数,然后用jQuery作为参数执行该函数。

<script>
jQuery.noConflict();

(function($) {
    //use '$' as you normally would
    $(document).ready(function() {
        //code here that depends on the document being fully loaded
    });

})(jQuery);  

</script>

答案 1 :(得分:12)

包含jQuery之后,立即在脚本标记中添加以下内容。

<script> 
jQuery.noConflict();

jQuery(document).ready(function() {
alert('hi');
});
</script>

同时将您的jQuery脚本放在mootools库之前。订单将是:

jQuery脚本包括

noConflict code

mootools脚本包括

答案 2 :(得分:0)

在任何jquery代码之前插入以下内容:

$j = jQuery.noConflict(true); 

现在你可以使用$ j而不是$来表示你想做的任何jquery。即:

$j("body")

答案 3 :(得分:-2)

而不是j(function()...

j(document).ready
(
  function()
  {
   alert("here");
   j("select#rooms")
     .change
     (
       function()
       {
         alert("here1");
       }
     )
  }
);

您试图包装一个函数而不是一个元素,这可能是导致意外行为的原因。