我的问题是:如何将特定的jQuery插件函数传递给DOM元素而不是所有元素?我认为我使用的代码和我正在使用的插件有两个错误。
我正在使用一个像这样开始的fileupload插件:
;(function($) {
$.fn.AjaxImgUpload = function() {
// Variable to store your files
var files;
alert ($(this));
// Add events
$(this, 'input[type=file]').on('change', prepareUpload);
$(this, 'form').on('submit', uploadFiles);
};
})(jQuery);
请注意,是我添加了jquery插件扩展方法。该插件最初只是一个脚本。无论如何,我将函数附加到这样的表单元素:
$("#leagueLogoUpload").AjaxImgUpload({});
虽然这有效,但由于函数事件,它使DOM中的所有表单对象都运行uploadFiles函数。我知道我一定做错了。我的逻辑是隔离#leagueLogoUpload表单,但我不认为我做得对。我认为$这意味着$这个DOM元素而不是别的。
答案 0 :(得分:0)
在自定义jQuery函数中,this
引用jQuery结果集(元素数组),因此您需要使用this.find()
:
this.find('input[type=file]').on('change', prepareUpload);
this.find('form').on('submit', uploadFiles);