将函数传递给特定的DOM元素

时间:2014-04-17 02:13:16

标签: jquery dom this

我的问题是:如何将特定的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元素而不是别的。

1 个答案:

答案 0 :(得分:0)

在自定义jQuery函数中,this引用jQuery结果集(元素数组),因此您需要使用this.find()

this.find('input[type=file]').on('change', prepareUpload);

this.find('form').on('submit', uploadFiles);