目前我有一个jQuery插件,它不仅在$.fn
中设置其功能,还在$
本身设置其功能,检查if (typeof(this) == 'function')
以查看是否已通过$.pluginname
调用它或$(elm).pluginname
...这是一种不好的做法,如果是这样,有没有更好的方法来提供元素可选?
答案 0 :(得分:2)
您是否阅读了jquery authoring文档?示例中的log函数被认为是为开发人员向jquery对象添加函数的标准方法。
答案 1 :(得分:1)
jquery扩展函数在两个名称空间中公开:
jQuery源将两者定义为:
$.extend = $.fn.extend = ...
这会让我相信他们打算让你能够做到这一点。但是,如果你看一下jQuery作者设置自己的函数来使用它们的方式,你可以更好地了解最佳实践。
例如,您通常需要$ .fn函数来调用$函数。 (很像jQuery源代码中的$ .data函数)
$.extend({
data: function(elem, key, value) {...}
});
和(稍微简化):
$.fn.extend({
data: function(key, value){
return this.each(function(){
$.data(this, key, value);
};
}
});
这样,一个调用另一个并负责检查你正在使用哪个版本,如果你愿意,你可以在$ namespace中检查一个未定义的'elem'参数。