为什么要调用jQuery's unbind('change')方法来触发更改事件

Why would you call jQuery's unbind('change') method to trigger a change event?

本文关键字:方法 事件 调用 jQuery 为什么 unbind change      更新时间:2023-09-26

下面是我从一个较大的脚本中提取的一些JavaScript,该脚本用于允许AJAX风格的图像上传,作为StackOverflow使用的标记编辑器的一部分。

一旦您使用HTML表单文件字段从计算机中选择图像,它就会触发脚本进行图像上传,并返回新上传图像的URL。

这句话特别让我好奇,我需要帮助更好地理解它,请。。。

$file.unbind('change').ajaxfileupload()

我知道unbind('change')正在触发change事件的上传。然而,我很困惑为什么它会使用unbind()

据我所知,这个函数基本上是用来删除事件处理程序的吗?我的逻辑是认为它应该使用bind(),但它;我们改用unbind(),它确实有效!但我不知道为什么
我在这里错过了什么?这里有足够的代码来回答我的问题吗?

我认为unbind()是用来删除/停止事件处理程序运行的,这是正确的吗?如果我是对的,那么我不确定为什么它会被附加到一个据称正在做相反的事情并等待图像触发上传的元素上?

希望这一切对某人来说都有意义,他们能给我指明正确的方向,一个简单易懂的答案会很好,谢谢!

var $file = $('input[type=file]', $dialog);
// upload
$file.unbind('change').ajaxfileupload({
    action: $file.attr('data-action'),
    params: {
        enctype: 'multipart/form-data'
    },
    onStart: uploadStart,
    //onComplete: uploadComplete
    'onComplete': function(response) {
      console.log(response);
      alert(JSON.stringify(response));
    }
});

我的想法是unbind()实际上是在删除更改事件的事件处理程序。如果我们看一下.ubind()的jQuery文档,似乎没有歧义。那么,代码可能在做什么呢?

我的猜测是,之前在某个地方添加了一个更改事件,我们想将其删除。$file.unbind('change').ajaxfileupload(....)的逻辑告诉我。。。首先,我们从$file引用的jQuery对象中删除更改事件的任何事件处理程序,然后执行名为ajaxfileupload的小部件。