因此,我有代码可以成功地将一个选择字段添加到我的媒体上传器(gallery view),这很酷,但我还需要向该字段添加一些jquery侦听器。
我正在使用“print\\u media\\u templates”挂钩添加我的标记和js,我想向select字段添加一个jQuery侦听器,.js--gallery-style
, 这将使用show或其他选项切换另一个字段:
function add_gallery_type_option(){
?>
<script type="text/html" id="tmpl-my-custom-gallery-setting">
<label class="setting">
<span><?php _e(\'Gallery Style\'); ?></span>
<select class="js--gallery-style" data-setting="gallery_style">
<option value="default"> Grid (default) </option>
<option value="slider"> Slider </option>
</select>
</label>
</script>
<script>
jQuery(document).ready(function(){
_.extend(wp.media.gallery.defaults, {
my_custom_attr: \'default_val\'
});
// merge default gallery settings template with yours
wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({
template: function(view){
return wp.media.template(\'gallery-settings\')(view)
+ wp.media.template(\'my-custom-gallery-setting\')(view);
}
});
});
</script>
<?php
}
add_action(\'print_media_templates\', \'add_gallery_type_option\');
我相信这很容易,但我还没有学会脊梁骨。js,所以我不知道从哪里开始寻找。
最合适的回答,由SO网友:Kalimah 整理而成
从…起Blackbone.js 网站:
render是视图应该覆盖的核心函数,以便用适当的HTML填充其元素(this.el)。约定是渲染始终返回此值。
因此,我对代码进行了一些修改,添加了jQuery更改侦听器。
function add_gallery_type_option(){
?>
<script type="text/html" id="tmpl-my-custom-gallery-setting">
<label class="setting">
<span><?php _e(\'Gallery Style\'); ?></span>
<select class="js--gallery-style" data-setting="gallery_style">
<option value="default"> Grid (default) </option>
<option value="slider"> Slider </option>
</select>
</label>
</script>
<script>
jQuery(document).ready(function(){
_.extend(wp.media.gallery.defaults, {
my_custom_attr: \'default_val\'
});
// merge default gallery settings template with yours
wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({
template: function(view){
return wp.media.template(\'gallery-settings\')(view)
+ wp.media.template(\'my-custom-gallery-setting\')(view);
},
render: function() {
wp.media.View.prototype.render.apply( this, arguments );
jQuery(this.$(\'.js--gallery-style\')).change(function(e)
{
alert(jQuery(this).val());
})
return this;
}
});
});
</script>
<?php
}
add_action(\'print_media_templates\', \'add_gallery_type_option\');