Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将函数传递给特定的DOM元素_Jquery_Dom_This - Fatal编程技术网

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

Jquery 将函数传递给特定的DOM元素,jquery,dom,this,Jquery,Dom,This,我的问题是:如何将特定的jQuery插件函数传递给DOM元素而不是所有元素?我认为我正在使用的代码和我正在使用的插件有两个错误 我正在使用一个文件上传插件,它的开头是这样的: ;(function($) { $.fn.AjaxImgUpload = function() { // Variable to store your files var files; alert ($(this)); // Add events

我的问题是:如何将特定的jQuery插件函数传递给DOM元素而不是所有元素?我认为我正在使用的代码和我正在使用的插件有两个错误

我正在使用一个文件上传插件,它的开头是这样的:

;(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);
$("#leagueLogoUpload").AjaxImgUpload({});
注意,是我添加了jquery插件扩展方法。这个插件最初只是一个脚本。无论如何,我将函数附加到表单元素,如下所示:

;(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);
$("#leagueLogoUpload").AjaxImgUpload({});

虽然这样做有效,但由于函数事件,它使DOM中的所有表单对象都运行uploadFiles函数。我知道我一定做错了什么。我的逻辑是隔离#leagueLogoUpload表单,但我认为我做得不对。我认为$this意味着$this DOM元素,而不是其他任何元素。

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


好的,哎呀!这是一个巨大的差异。但是我还是有点困惑。如果我发出警报($(此));一旦我声明了这个函数,我就会收到其他DOM对象的警报(一些按钮在生成有意表单和输入的相同js代码中提交表单)。我想说的是,只将该函数附加到#leagueLogoUpload表单上,而不附加任何其他内容,但它没有听@用户3479138刚刚意识到我犯了一个错误;用它应该是的更新了答案。嗯,它不起作用。它提醒我$this是一个完全不同的对象。在本例中,它是一个按钮,也是在与#leagueLogoUpload表单相同的脚本中生成的。我一定是用错了这美元。。。它不是专门引用#leagueLogoUpload表单吗?@user3479138什么是
$this
?我的理解是,如果将函数附加到元素,则可以使用“this”引用附加的对象并与该函数交互。因此,我将函数附加到具有特定ID的表单元素,并尝试使用“this”引用脚本中的元素;但它却引用了许多其他元素(在本例中是“form”类型)。JS文件在启动时加载,但我不希望函数在调用之前运行。。