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