我想寫一個插件,將對我選擇的dom元素內的某些輸入字段上的任何更改作出反應。jquery插件無法訪問插件定義中引用的對象
我的插件定義如下:
(function($){
var methods = {
init : function(options) {
console.log(this.obj);
var inputs = $('input', this.obj);
$.each(inputs, function(i, domElement){
$(this.obj).premiumUpdatable('addEvent', $(domElement));
})
},
addEvent: function(element){
$(element).bind('change',function(){
console.log($(element).val());
})
}
};
$.fn.premiumUpdatable = function(method) {
return this.each(function(){
var obj = $(this);
if (methods[method]) {
return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || ! method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.premiumUpdatable');
}
});
};
})(jQuery);
然後,我打電話給我的插件,如:
$('div.updatable').premiumUpdatable();
問題是,當我嘗試的console.log(this.obj)中的一個方法定義我總是得到未定義。我希望得到我在插件定義中的參考,obj = $(this); ...我希望得到$(this)元素。
我需要應用於多個頁面上的DOM元素的這個插件,但如果我不能得到的參考DOM元素......我真的不能告訴哪個是哪個了....
任何幫助將不勝感激...
PS:我可能不會問正確的問題,因爲我仍然是新的jQuery插件開發,但這個問題似乎真的錯過了我,我無法克服它。