Я пытаюсь написать плагин, который бы реагировал на любые изменения в некоторых полях ввода внутри элемента dom, который я выбираю.
мое определение плагина выглядит следующим образом:
(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, но эта проблема, кажется, действительно беспокоит меня, и я не могу ее преодолеть.