Why does the jQuery file upload stop working after first upload?

javascript, jquery, jquery-file-upload

Solution

It looks as though the scope of `element` is being lost / changed after the add function. Resetting it like below seems to work.

var element = $("#upload");

$(".browse").click(function () {
    element.trigger("click");
});

element.fileupload({
    add: function () {
        alert("add");
        element = $(this);
    }
});

Fiddle

Problem

I'm using the jQuery File Upload plugin. I'm hiding the file input and activating it upon clicking a separate button. (See this fiddle.) HTML: ``` <div> <button class="browse">Browse</button> <input id="upload" type="file" style="display: none;" /> </div> ``` JavaScript: ``` var element = $("#upload"); $(".browse").click(function () { $("#upload").trigger("click"); }); element.fileupload({ add: function () { alert("add"); } }); ``` Notice that if you press the button then select a file, the `add` method is activated and you'll get an alert. Do it again, and you'll get another alert. Now, see this fiddle. The only difference is that I've changed the following line ``` $("#upload").trigger("click"); ``` to ``` element.trigger("click"); ``` Notice that now, the first time you click the button then select a file, the `add` method is activated and you get the alert (just like before), but if you do it again, the `add` method never activates. What is causing this difference in behavior?

Original source