拥有jQuery插件,范围问题

时间:2011-04-06 14:29:26

标签: jquery plugins scope

我想创建一个插件,它可以处理普通对象 - 我可以使用每个插件进行迭代。因此,我希望可以通过jQuery的全局对象访问,如$ .myPluginFn()。

(function($) { $.fn.test = function() { return 1; } })(jQuery)

执行$ j.test()会出错:

TypeError: Object function (a,b){return new d.fn.init(a,b,g)} has no method 'test'

我做错了什么?另一方面,分配给$ .fn.myPluginFn也起作用。

2 个答案:

答案 0 :(得分:2)

如果我理解正确并且您希望jQuery.test()能够正常工作,那么您应该使用:

$.test = ...

而不是

$.fn.test = ...

如果您希望jQuery(selector).test()能够工作,那么您可以使用后者。

答案 1 :(得分:1)

.fn.foo函数为每个jQuery对象提供了一个foo函数。因此,如果您创建一个,可以这样称呼它:$("#id_of_item").foo();

如果你想操纵物品,这很有用。

但是如果你想创建其他函数,你不需要放入jquery对象。