web-dev-qa-db-fra.com

wp.media problème javascript avec on select

Je ne suis pas un expert sur JS, donc j’ai rencontré un problème dans mon plugin sur lequel je travaille. Le problème est que j’ai créé un champ de répéteur personnalisé avec un uploader utilisant wp.media pour chaque champ comme vous le verrez au code ci-dessous:

var mediaClientUploader;

// background
$(document).on('click', '.upload_client_logo', function(e) {

    // blocking
    e.preventDefault();
    var $this = $(this);
    var  myInput = $this.prev('input');

    //alert(myInput.data('repeat-count'));

    if ( mediaClientUploader ) {
        mediaClientUploader.open();

        return;
    }

    mediaClientUploader = wp.media.frames.file_frame = wp.media({

        title: 'Upload Picture',
        button: {
            text: 'Choose Picture'
        },

        multiple: false

    });

    console.log(mediaClientUploader);

    mediaClientUploader.on('select', function () {


        attachment = mediaClientUploader.state().get('selection').toJSON();

        myInput.val(attachment.url);

    });

    mediaClientUploader.open();

});

Le problème est cette partie spécifique

mediaClientUploader.on('select', function () {


        attachment = mediaClientUploader.state().get('selection').toJSON();

        myInput.val(attachment.url);

    });

il est juste en cours d'exécution pour une fois, je veux dire avec c'est que pour la première sélection va ajouter l'URL à plusieurs reprises pour la première entrée que je choisis !!

Je connais ce problème, je peux le résoudre par $ (document) .on ("select", "#div", function) mais je ne le fais pas sais comment je peux utiliser cette approche avec wp.media ou ma var mediaClientUploader

1
hesham shawky

J'ai trouvé le problème: "D c'était cette partie du code

 if ( mediaClientUploader ) {
    mediaClientUploader.open();

    return;
}

il arrête la fonctionnalité de mon événement sélectionné après le premier clic, alors je le supprime et tout va bien

0
hesham shawky