我正在将AjaxUpload插件与jQuery一起使用,并且大多数情况下一切正常,但是我必须单击两次按钮才能执行它。我猜这是一个范围问题...或(?)还在学习...

这是我的代码:

    $(".upload-button").live("click", function(event) {
       event.preventDefault();
       var currentId = $(this).closest("div").attr("id").replace("slide-", "");
       new AjaxUpload($(this), {
         action: "./php/upload.php",
         name: 'userfile',
         autoSubmit: true,
         onSubmit: function(file , ext) {
       },
       onComplete: function(file, response) {
         // enable upload button
         // this.enable();
         $("#slide-" + currentId).find(".movie-image").attr("src", baseImgPath + file);
         $("#mImg" + currentId).val(file);
      }
   });


任何想法表示赞赏。 :)

最佳答案

知道了-对于其他可能遇到类似问题的人来说,这就是方法...

主要问题是这些按钮是动态创建的,并且AjaxUpload最初不会绑定到.live()调用中,因此是“单击,移动,再次单击,触发”。

通过在创建按钮时在我的循环中调用AjaxUpload(包装在其自己的函数中,如下所示),它们就被初始绑定并正常工作。

循环中使用的行:

makeUpButton(("#upload-button-" + slideCount), slideCount);


AjaxUpload调用:

function makeUpButton(theButton, theId) {
    new AjaxUpload(theButton, {
        action: "./php/upload.php",
        name: 'userfile',
        autoSubmit: true,
        onSubmit: function(file , ext) {
            this.disable();
        },
        onComplete: function(file, response) {
            this.enable();
            $("#slide-" + theId).find(".movie-image").attr("src", baseImgPath + file);
            $("#mImg" + theId).val(file);
        }
    });
}


希望这对某人有帮助,我知道这几天让我发疯。 ;)
干杯。

07-24 16:29