jQuery插件.fn问题

时间:2010-04-20 00:12:52

标签: jquery jquery-plugins

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

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

我正在尝试使用此调用无效的函数调用该函数。

$.test()

但是这个电话确实

$.fn.test()

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

谢谢, 科里

2 个答案:

答案 0 :(得分: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');放进去,看看会发生什么。

另一个好看的地方是各种社交编码网站(GitHubBitBucketGoogle Code等)并搜索“jQuery插件”以了解其他人是如何做到的

答案 1 :(得分:1)

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

$("div").test();

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

$.test();

这样做:

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

请参阅Plugins/Authoring