我有一段JS代码,根据选择项的值使用显示/隐藏定制器控制组。
在最近的wp更新之前,代码运行良好(不确定是哪个版本首先破坏了这一点)。
下面是让js文件排队的代码。
add_action(\'customize_controls_print_scripts\', \'ppl_customize_controls_scripts\');
function ppl_customize_controls_scripts(){
wp_register_script( \'ppl-customize-control\', get_template_directory_uri().\'/js/customizer-control.js\', array(\'jquery\'), 1, true);
wp_enqueue_script( \'ppl-customize-control\' );
}
The JS file
jQuery(document).ready(function($){
var skin_select = $(\'#customize-control-ppl-ninja-theme-options-skin\').find(\'select\');
//alert(skin_select.attr(\'class\'));
var selected_val = skin_select.children(\'option:selected\').val();
var custom_group = [
\'#accordion-section-custom_header_styles\',
\'#accordion-section-custom_slider_styles\',
\'#accordion-section-custom_footer_styles\',
\'#accordion-section-custom_general_colors\'
];
if(selected_val != 4){
hide_custom_controls(custom_group);
}
skin_select.change(function(){
var val = $(this).val();
if(val != 4){
hide_custom_controls(custom_group);
}else{
show_custom_controls(custom_group);
}
});
function hide_custom_controls(custom_group){
var selector = custom_group.join(\',\');
$(selector).hide();
}
function show_custom_controls(custom_group){
var selector = custom_group.join(\',\');
$(selector).show();
}
});
The problem is, JS加载和隐藏customizer控件部分与内联css配合得很好display:none
. 然后cusomizer js脚本将其修改并将内联css更新为display:list-item
这使它们可见。因此,我需要在定制程序完全加载之后运行JS代码。我查看了wp includes目录中的定制器脚本,但没有找到任何可以使用的内容。也许我错过了什么。
有关修订css的更多信息,请参见/wp-admin/js/customize-controls.js
.
脚本正在使用ready
事件以添加类并修改面板、截面和控件的可见性。但我无法将侦听器添加到该事件中。
属性activePanels、activeSections、activeControls是从文件的PHP中设置的/wp-admin/customize.php
我找不到覆盖该变量的方法,因为您可以看到它是在body标记结束之前打印的。
因此,可能的解决方案可能是找到一种方法ready
事件