我需要一些关于我正在创建的jQuery插件的帮助。
$.fn.mymethod = {
init : function(options){
this.each(function() {
var settings = { };
if(options){ $.extend(settings, options); }
});
return this;
}
}
$("input[type=text]").mymethod.init();
它似乎不起作用,我收到一个错误: TypeError:this.each不是
上的函数我希望有人能指出我正确的方向。
谢谢!
答案 0 :(得分:0)
如果没有额外的对象引用级别,您将希望以这种方式执行此操作:
$.fn.mymethodInit = function(options){
this.each(function() {
var settings = { };
if(options){ $.extend(settings, options); }
});
return this;
}
当您按照原始提案中的方式插入额外对象时,这意味着它必须被调用为:
$(...).mymethod.init()
并且,以这种方式调用,意味着this
指针是mymethod
,而不是您需要它的jQuery对象。这只是Javascript在您调用this
时设置foo.bar.method()
指针的结果。
有一些解决方法,但所有都是丑陋和复杂的,所以只需放弃点语法的额外级别。一个常见的解决方法是在所有方法上使用公共前缀:
$.fn.mymethod_Init = function() {...}
$.fn.mymethod_Save = function() {...}
这与您尝试使用的命名空间一样唯一,但不会产生您遇到的问题。