jQuery插件.fn问题

我似乎在创建一个jquery插件时遇到了一些问题。 我在firebug控制台中测试一个简单的插件,并且没有像我期望的那样定义该函数。 这是我正在使用的代码模式

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

我试图用这个不起作用的调用来调用该函数。

 $.test() 

但是这个电话呢

 $.fn.test() 

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

谢谢,科里

试试$('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插件”以了解其他人如何做到这一点。

扩展jQuery有两种方法。 你选择的那个允许这样的事情:

 $("div").test(); 

虽然代码的格式不正确。 只需添加静态方法即可调用:

 $.test(); 

做这个:

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

请参阅插件/编写 。