Друзья, пишу плагин, столкнулся с проблемой. При событии change не адекватно реагирует. Как мне лучше прописывать события?
Данный пример ищет на сайте поля input['type=file'] с классом .square_upload, и заворачивает их в label. Дальше я хочу сделать событие при выборе файла. Но он у меня начинает срабатывать по несклько раз, если разместить 3 поля, то при выборе первого, будет 3 прохода, 2рого - 2 и тд...
(function( $ ){
var $this = $(this);
var methods = {
init : function( options ) {
return this.each(function(){
$this = $(this);
$this.width = $this.data('width');
$this.height = $this.data('height');
methods._build();
methods._initEvents();
});
},
_build : function(){
$this.wrap( '<label class="unit_upload" />' );
$this.unit_upload = $this.parent();
$this.unit_upload.css({
'width' : $this.width,
'height' : $this.height
});
$this.parent().append( '<div class="preview" />' );
},
_initEvents : function(){
$(document).on('change', '.unit_upload input', function(event) {
console.log('1';)
});
}
};
$.fn.square_upload = function(method){
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 {
return methods.init.apply(this);
}
};
$(".square_upload").square_upload();
})( jQuery );