2010-04-20 37 views
3

我似乎有一些问题,创建一个jQuery插件。我正在萤火虫控制台测试一个简单的插件,并没有像我所期望的那样定义函数。这里是我使用的代码模式jQuery插件.fn问题

jQuery.fn.test = function() {console.log("runs")} 

我想调用这个不起作用的函数的函数。

$.test() 

但此调用不

$.fn.test() 

我不认为这是它是如何工作的,所以我认为我做错了什么,尽管所有的文件似乎都同意,我应该是正确的。任何人有任何建议?

感谢, 科里

回答

3

尝试$('div').test()

http://docs.jquery.com/Plugins/Authoring一个很好的介绍jQuery插件读取。


好的,这里有一些额外的信息,而我在这里。当创建一个插件,有三种不同的接近绝对的规则:

  • 当你,让你保证你得到的jQuery对象与$定义插件,请始终使用匿名方法。
  • 总是试图再次返回jQuery对象(链接)。
  • 始终迭代,因为你的选择有可能超过一个元素匹配的元素。

所以对于公约的缘故,开始是这样的:

(function($) { 
    $.fn.test = function() { 
    return this.each(function() { 
     console.log("runs"); 
    }); 
    } 
})(jQuery); 

这将打印“奔跑”为您的选择匹配的每一个项目(很多,如果你只使用div)。试着把$(this).css('background-color', 'red');放进去看看会发生什么。

另一个好看的地方是各种社交编码网站(GitHub,BitBucket,Google Code等),并搜索“jQuery Plugin”来查看其他人是如何做的。

+0

是有道理的,我需要调用它的东西,那是愚蠢的感谢。 – 2010-04-20 00:20:13

+0

没问题。查看编辑了解更多信息。 – 2010-04-20 00:28:21

1

有延长的jQuery的两种方式。你选择的是这样的,例如:

$("div").test(); 

尽管代码的格式不正确。只需添加一个静态方法,这样你就可以拨打:

$.test(); 

做到这一点:

jQuery.test = function() { 
    ... 
}; 

Plugins/Authoring