说我有以下jQuery插件:
$.fn.myPlugin = function () {
//plugin code
}
通常,您在一定数量的元素上调用插件,如:
$("body").myPlugin();
有没有办法在不指定元素的情况下调用我的插件?
我试过这样称呼它:$.myPlugin();
,但这不起作用。
这有什么作用:$().myPlugin();
,但这是调用它的正确方法吗?
答案 0 :(得分:49)
快速编写它的方式是:
$.myPlugin = function () {
// Plugin code
}
编写它的正确方式是:
(function ($) {
$.extend({
myPlugin: function () {
// plugin code
}
});
})(jQuery);
一开始看起来有点令人困惑,但它是一种常见的jQuery模式。
(function($){
// Code
})(jQuery);
此代码创建一个匿名函数,并将其作为参数传递给jQuery
。在函数内部,此参数绑定到$
。之所以这样做,即使jQuery以no-conflict模式运行,它也允许您使用$
。
第二部分是$.extend
。当使用单个参数调用时,它基本上扩展了jQuery对象本身。
调用插件(在快速和正确的情况下)是:
$.myPlugin();
答案 1 :(得分:2)
我认为你正在寻找jQuery.extend():
jQuery.extend({
func: function() {
alert('test');
}
});
$.func();
答案 2 :(得分:-1)
如果你写了不同的内容,如$('a').myPlugin()
,是否使用集合?如果没有,那你为什么要把它放在$.fn
?也许你想把它注入jQuery
本身。
如果 在集合上工作,但有时空集合是有意义的,那么我认为你的调用者应该是$([])
- 将空Array
传递给jQuery
为您提供一个空集合;没有任何传递似乎会给你一个包含document
的集合。