【发布时间】:2011-02-25 14:31:06
【问题描述】:
我刚开始编写 jQuery 插件。我写了三个小插件,但我只是简单地将这行代码复制到我所有的插件中,而实际上并不知道它的含义。有人可以告诉我更多关于这些的信息吗?也许有一天在编写框架时解释会派上用场:)
这是做什么的? (我知道它以某种方式扩展了 jQuery,但还有什么有趣的事情要知道)
(function($) {
})(jQuery);
以下两种写插件的方式有什么区别:
类型 1:
(function($) {
$.fn.jPluginName = {
},
$.fn.jPluginName.defaults = {
}
})(jQuery);
类型 2:
(function($) {
$.jPluginName = {
}
})(jQuery);
类型 3:
(function($){
//Attach this new method to jQuery
$.fn.extend({
var defaults = {
}
var options = $.extend(defaults, options);
//This is where you write your plugin's name
pluginname: function() {
//Iterate over the current set of matched elements
return this.each(function() {
//code to be inserted here
});
}
});
})(jQuery);
我可能会离开这里,也许所有的意思都是一样的。我很迷惑。在某些情况下,this 似乎不适用于我使用 Type 1 编写的插件。到目前为止,Type 3 对我来说似乎是最优雅的,但我想知道其他人也一样。
【问题讨论】:
-
这里是睡觉时间,但对于初学者来说,
(function($) { })(jQuery);将代码包装起来,这样$在闭包内就是jQuery,即使$意味着它之外的其他东西,通常例如$.noConflict()的结果。这可以确保您的插件正常工作,无论$ === jQuery:) -
关于
(function($) { })(jQuery)你说:“我知道它以某种方式扩展了 jQuery [...]”。显然,您不知道,因为您的陈述是 100% 错误的。顺便说一句,它可能会误导未来的读者。看看这个:stackoverflow.com/a/32550649/1636522. -
扩展@NickCraver 的 cmets,jquery-ui-1.7.2.custom.min.js 使用这个例如:jQuery.ui||(function(c){var i=c.fn.删除,d=c.browser.mozilla........})(jQuery);.我知道这是旧版本的 jQuery UI,代码已弃用,但重点是展示在这种情况下,他们如何使用“c”而不是“$”。
标签: javascript jquery