私はJSのエキスパートではないので、私が取り組んでいる私のプラグインで問題に直面しました。問題は、各フィールドにwp.mediaを使用してアップローダーでカスタムリピーターフィールドを作成したことです。以下のコードでわかるように:
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();
});
問題はこの特定の部分です
mediaClientUploader.on('select', function () {
attachment = mediaClientUploader.state().get('selection').toJSON();
myInput.val(attachment.url);
});
それは一度だけ実行されている、それは私が選択した最初の入力のために何度も何度も最初の選択のためにURLを追加するということです。
この問題は$(document).on("select "、" #div "、function)で解決できますが、このアプローチの使い方がわからないwp.mediaまたは私のvar mediaClientUploader
私は問題を見つけました:「それはコードのこの部分でした
if ( mediaClientUploader ) {
mediaClientUploader.open();
return;
}
それは最初のクリックの後私のselectイベントの機能性を止めるので私はそれを単に削除してそしてすべてが正常である