我正在编写一个jQuery插件,我希望有多个功能可供使用:
//Calling the "constructor"
$(element).pluginName();
//Calling the "method"
$(element).pluginName.methodName();
所以我基本上做的是:
(function($, window, document, undefined) {
//The "constructor"
$.fn.pluginName = function() {
//try accessing $(this)
var meh = $(this);
};
//The "method"
$.fn.pluginName.methodName = function() {
//try accessing $(this)
var test = $(this);
};
})(jQuery)
现在当我按照上面方框中描述的那样调用它时,它适用于“构造函数”。但是当我尝试“方法”时,我得到一个错误:
TypeError: document is null
http://(url)/jquery.js
safeFrag = document.createDocumentFragment();
Line 5823
现在到了有趣的部分:当我将“方法”重命名为$.fn.pluginNameMethodName
时(基本上,如果我删除最后一个.
),我可以通过调用{{1}来调用“方法” }}
那么,我做错了什么?
我希望我的插件有多个易于访问的方法(我不希望使用$(element).pluginNameMethodName();
调用我的插件方法。)
答案 0 :(得分:1)
如果您想要易于访问的方法,请让您的插件提供存储在元素上的接口。
(function($, window, document, undefined) {
//The "constructor"
$.fn.pluginName = function() {
return this.each(function(){
var obj = {
elem: this,
theMethod: function(){
var meh = this.elem;
}
};
$(this).data("pluginName",obj);
})
};
})(jQuery)
// using it
var pluginInterface = $(theelement).pluginName().data("pluginName");
pluginInterface.theMethod();
尽管如此,我认为$(element).pluginName(methodName);
也很容易访问。 (甚至更多)。