这看起来很简单,但实际上没有人用简单的英语告诉他们&当它工作时(至少在前几个搜索引擎'页面)。也许我只是想找到正确的关键词。
我已经写了近1000行jQuery&我开始认为,如果我写得更多,它只会带来更多的问题,因为我可能会解决所有问题(非常非常轻的OCD [不是真的,但我喜欢订单] - 代码应该是干净的&"正确的" )。
如果我将代码放在jQuery(function($) {
内,它将允许我使用$
启动所有内容,否则我将获得" $ is not a function
"错误。
我还注意到有些代码最后有(jQuery)
。
有人可以告诉我规则&如果做得不同会有什么影响吗?
答案 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 $');
});
});
参考资料: