jQuery和$ problems

时间:2015-09-12 02:03:21

标签: jquery format

这看起来很简单,但实际上没有人用简单的英语告诉他们&当它工作时(至少在前几个搜索引擎'页面)。也许我只是想找到正确的关键词。

我已经写了近1000行jQuery&我开始认为,如果我写得更多,它只会带来更多的问题,因为我可能会解决所有问题(非常非常轻的OCD [不是真的,但我喜欢订单] - 代码应该是干净的&"正确的" )。

如果我将代码放在jQuery(function($) {内,它将允许我使用$启动所有内容,否则我将获得" $ is not a function"错误。

我还注意到有些代码最后有(jQuery)

有人可以告诉我规则&如果做得不同会有什么影响吗?

2 个答案:

答案 0 :(得分:1)

您遇到的问题似乎相当简单:jQuery可能与noConflict()一起使用,这意味着$不会在全局命名空间中。要解决这个问题,您可以删除对所述方法的调用,也可以将代码包装在匿名函数中:

(function ($) {
    //Your code
})(jQuery);

答案 1 :(得分:1)

jQuery库设置为jQuery.noConflict()时,通常会发生这种情况。可能发生这种情况的一个例子是Wordpress这样的情况,这样可以防止与其他Wordpress库的兼容性问题。

如果您想在$对象可用时立即使用jQuery作为jQuery对象的别名:

(function($) {
    // The locally-scoped $ can be used in this function as an alias to jQuery
})(jQuery);

如果您想使用$作为具有.ready()功能的jQuery对象的别名:

jQuery(document).ready(function($) {
    // The locally-scoped $ can be used in this function as an alias to jQuery
});

更新:根据您在评论中提出的问题,是的,您可以将$(document).ready()包裹在jQuery(function($) { })中,如下所示:

jQuery(function($) {        
    $(document).ready(function() {
        alert('in .ready() using $');
    });
});

为了使示例更全面,请参阅jQuery使用$释放.noConflict()时会发生什么:

jQuery.noConflict();
jQuery(function() {
    // $ is not locally scoped anymore, _
    // and .noConflict() is on, _
    // so the following won't work, _
    // it will return TypeError: $ is not a function
    $(document).ready(function() {
        alert('in .ready() using $');
    });
});

参考资料: