0

我正在使用以下 jQuery 代码:

jQuery(document).ready(function() { 
    jQuery('#main').click(function(){
        jQuery('#box').slideDown();
    }); 
});

上面的代码工作正常,但是如果我使用$而不是jQuery,我会收到以下错误:

TypeError: $ is not a function

我知道这是因为一些冲突,但有没有我$在上面的代码中使用的方法?

我也尝试过使用jQuery.noConflict();,但它仍然给出同样的错误。

4

5 回答 5

2

用这个:-

jQuery(function($) { 
    $('#main').click(function(){
        $('#box').slideDown();
    }); 
});

给 jQuery 命名空间起别名

当使用另一个 JavaScript 库时,我们可能希望调用 $.noConflict() 来避免命名空间问题。当调用此函数时,$ 快捷方式不再可用,迫使我们每次通常编写 $ 时都要编写 jQuery。但是,传递给 .ready() 方法的处理程序可以接受一个参数,该参数被传递给全局 jQuery 对象。这意味着我们可以在 .ready() 处理程序的上下文中重命名对象,而不会影响其他代码。

Reference

于 2013-06-13T09:19:25.870 回答
1

试试这样

  $.noConflict();
  jQuery(document).ready(function($) {
        $('#main').click(function(){
           $('#box').slideDown();
        }); 
  });
于 2013-06-13T09:20:06.253 回答
1

您可以将其包装在一个闭包中:

(function($){

    // use $ as jQuery

})(jQuery);
于 2013-06-13T09:20:20.253 回答
1

您可以使用闭包:

(function ($) {
    $(document).ready(function () {
        $('#main').click(function () {
            $('#box').slideDown();
        });
    });
})(jQuery)
于 2013-06-13T09:20:33.250 回答
1

第一次使用noConflict

var j = jQuery.noConflict();

然后使用

j(document).ready(function() { 
    j('#main').click(function(){
        j('#box').slideDown();
    }); 
});
于 2013-06-13T09:21:15.897 回答