Как лучше называть wordpress media uploader (wp.сми)

У меня есть более 5 вкладок в metabox. В каждом metabox у меня есть загрузочный модал для вариаций изображений, содержащий некоторые входы и кнопку с классом .btn.select_media_и атрибутом data-id, который содержит уникальный идентификатор этой вкладки. Я открываю wp uploader по щелчку этой кнопки. пожалуйста, смотрите мой код JS.

var mediaUploader;
$(document).on('click','.btn.select_media_',function(e){
    e.preventDefault();
    var id=$(this).data('id');
    // If the uploader object has already been created, reopen the dialog
    console.log('clicked:'+id);
    if (mediaUploader) {
      mediaUploader.open();
      return;
    }
    // Extend the wp.media object
    mediaUploader = wp.media.frames.file_frame = wp.media({
    ///mediaUploader = wp.media.frames.mediaUploader = wp.media({
      title: 'Choose Image',
      button: {
      text: 'Choose Image'
    }, multiple: false });

    mediaUploader.on('select', function() {
      attachment = mediaUploader.state().get('selection').first().toJSON();
      $('#img_url_'+ id).val(attachment.url);
      $('#img_width_'+ id).val(attachment.width+'px');
      $('#img_title_'+ id).val(attachment.title);
      $('#show_img_'+ id).attr('src',attachment.url);
      console.log('selected'+ id);
    });
    // Open the uploader dialog
    mediaUploader.open();
});

Проблема в том, что когда я устанавливаю/загружаю изображение на любой вкладке, эта функция запускает и устанавливает значение изображений в mideaUploader.on('select')событии. когда я пытаюсь выбрать изображение в другой вкладке, я заметил в консоли, которая console.log('selected'+ id);имела старое значение (на которой я установил первый раз) и console.log('clicked'+ id);имела более новое значение идентификатора.

Пожалуйста, помогите!, что не так с моим кодом? и как я могу получить одинаковое значение в верхней и нижней части этого обработчика?

1 ответ

  1. Его хорошо я решил свою проблему, объявив global objectи присвоить data-idзначение этому объекту.