在我正在开发的Wordpress插件中,我使用内置的Wordpress媒体上传器功能(wp.media)添加照片。我正在使用selection
打开模式后,可在媒体库中预选图像的选项。我认为在这些项目上附加一个新的CSS类,并将它们的样式与用户选择的其他新图像不同,这将是一个很酷的想法。
我在将jQuery传递到模式中时遇到了一个问题,我似乎无法正确处理事件。问题是,一旦打开模式,媒体上传器中的图像就会动态生成。我已尝试将脚本添加到on
事件(打开模式时),但这似乎为时过早。将它们添加到select
或close
事件显然为时已晚。
目标是在模式打开后,将自定义CSS类添加到预先选择的所有图像中。有没有人有过将jQuery传递到媒体上传器模式的经验?
下面是我使用的jQuery:
//Image Uploader function
odp_slideshowImageUpload = {
// Call this from the upload button to initiate the upload frame.
uploader : function() {
var frame = wp.media({
title : \'Choose or Upload an Image(s)\',
multiple : true,
library : { type : \'image\' }, //only can upload images
button : { text : \'Insert Image(s)\' }
});
frame.on( \'open\', function() {
var selection = frame.state().get(\'selection\');
// Get the id of all the images already in the slideshow
var ids = $( \'#odp_slider_container li[id]\' ).map(function() { return this.id; }).get();
// When our modal opens, make all of the images "selected"
ids.forEach( function(id) {
attachment = wp.media.attachment(id);
attachment.fetch();
selection.add( attachment ? [ attachment ] : [] );
});
$(\'.media-modal-content li.selected\').addClass(\'testing\'); //does not work
});
// Handle results from media manager
frame.on( \'select\', function() {
var selection = frame.state().get( \'selection\' );
selection.map( function( attachment ) {
attachment = attachment.toJSON();
$( \'#odp_slider_container\' ).append( function() {
var output = \'\';
output += \'<li id="\' + attachment.id + \'" class="odp-slideshow-item" >\';
output += \'<div class="slide-container"><image src="\' + attachment.sizes.thumbnail.url + \'" alt="\' + attachment.alt + \'" /></div>\';
output += \'<input type="text" class="slide-id odp-force-hidden" name="slide_id[]" value="\' + attachment.id + \'" />\';
output += \'<input type="text" class="slide-image odp-force-hidden" name="slide_image[]" value="\' + attachment.url + \'" />\';
output += \'<input type="text" class="slide-title odp-force-hidden" name="slide_title[]" value="\' + attachment.title + \'" />\';
output += \'<input type="text" class="slide-alt odp-force-hidden" name="slide_alt[]" value="\' + attachment.alt + \'" />\';
output += \'<input type="text" class="slide-caption odp-force-hidden" name="slide_caption[]" value="\' + attachment.caption + \'" />\';
output += \'<div class="details-container"><a class="details" href="#">Details</a><a class="remove" href="#">Remove</a></div>\';
output += \'</li>\';
return output;
});
});
});
frame.open();
return false;
},
};
我理解这是一个复杂的问题,所以请告诉我是否可以在某些方面更清楚。