2014-01-24 45 views
1

我有一个问题,基本上是一个跟进这一个:WordPress 3.5 Media Uploader Multiple File Select获取jQuery的变量重置每次点击功能执行

我使用this code使用WordPress的媒体上传的插件管理脚本,需要三个独立图像上传的文本框。我按照以下方式编辑了代码,以便将图像url返回到相应文本框的值。

jQuery(document).ready(function() { 

    var tgm_media_frame; 
    var field; 
    var buttonID; 
    var button; 

    jQuery('.upload-images').click(function() { 

     if (tgm_media_frame) { 
      tgm_media_frame.open(); 
      return; 
     } 

     buttonID = jQuery(this).attr('id'); 
     button = jQuery("#"+buttonID); 
     field = button.prev('input'); 

     tgm_media_frame = wp.media.frames.tgm_media_frame = wp.media({ 
      multiple: true, 
      library: { 
       type: 'image' 
      }, 
     }); 

     tgm_media_frame.on('select', function(){ 
      var selection = tgm_media_frame.state().get('selection'); 
      selection.map(function(attachment) { 
       attachment = attachment.toJSON(); 
       console.log(field.attr('id')); 
       field.val(attachment.url); 
      }); 
     }); 

     tgm_media_frame.open(); 

    }); 

}); 

当我点击第一个按钮并上传图片时,它按预期工作。然而,当我点击同一类的不同按钮上传下一张图片时,上传器工作正常,但是网址放置在第一个按钮的输入字段中。一旦字段变量第一次被设置,它就不会改变。如何在每次点击后重置它以便URL进入相应的输入文本字段?

回答

1

不容易理解没有JSFiddle发生了什么。也许删除这部分?

if (tgm_media_frame) { 
    tgm_media_frame.open(); 
    return; 
} 
+0

不知道为什么,但它的工作。谢谢! – liz

+0

好吧,你有“var tgm_media_frame;”在函数外部,所以在函数结束时它仍然存在。我建议你删除的代码位是检查变量,看它是否为空,如果不是空的,它将会打开()并退出你的函数; – vahanpwns

1

这将是更容易有ID各自对按钮字段id =“field_buttonId”,那么你可以很容易地得到prev的字段选择来代替。

buttonID = jQuery(this).attr('id'); button = jQuery(“#”+ buttonID);

- > field = jQuery(“#field _”+ buttonID);

+0

甚至更​​好,只需用'field = jQuery(this).prev('input');'替换所有这三行 – vahanpwns