2014-01-24 84 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