jQuery AjaxUpload,必须单击两次按钮?

我正在使用带有jQuery的AjaxUpload插件,并且大部分工作都很好,但我必须单击我的按钮两次才能执行它。 我猜这是一个范围问题……或者(?)还在学习……

这是我的代码:

$(".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); } }); } 

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

试试这个 :

 $(".upload-button").live("hover", function(event) { var currentId = $(this).closest("div").attr("id").replace("slide-", ""); new AjaxUpload($(this), { action: "./php/upload.php", name: 'userfile', autoSubmit: true, onSubmit: function(file , ext) { //onsubmit code here.. }, onComplete: function(file, response) { // oncomplete code here } }); $(this).trigger('click'); 

});

我的工作,但我不确定它是如何工作的。 ‘hover’(而不是’click’)将创建一个新的AjaxUpload(这将阻止它点击两次)

如果要创建动态按钮,则需要使用每个按钮的ID创建AjaxUpload,请尝试以下操作:

 // to add new button $("#add_sector").click(function() { var ID = [Generate a new ID]; var button = ''; $('#cont_img_catalogo').append(button); //create Ajax new AjaxUpload($('#' + ID ),{ action: 'procesar_imagen.php', name: 'image', onSubmit : function(file, ext){ // desabilitar el boton this.disable(); ... }, onComplete: function(file, response){ // Habilitar boton otra vez this.enable(); ... } }); }); 

要删除按钮使用:

 $('#' + ID).fadeOut("slow", function() { $('#' + ID).remove(); }); 

如果你使用img,你需要这个课程

 a, a:visited{ display: block; float: left; text-decoration:none;} 

试试这个:

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

这将在页面加载时让你两次点击。 从那里点击一下。

如果你使用动态控制,那次我们在两次点击时遇到问题,我已经解决了它对我有用。 我花了两天时间解决这个问题,请检查以下步骤:=

在PHP循环中为每个使用下面添加java脚本加载函数

    Upload   

和你的javascript文件,你可以从php循环获得动态id

 function uploadphoto(id) { new AjaxUpload('#photo'+id, { 

所以,你可以在样本行上方传递动态ID,就是这样:)快乐的编码