我正在尝试访问任何default 自定义程序窗格中的控件,not the preview !<所以我排了一个队testing.js a下的文件customize_controls_enqueue_scripts 操作
/**
* Enqueue script for custom customize control.
*/
function custom_customize_enqueue() {
wp_enqueue_script( \'testing\', get_template_directory_uri() . \'/assets/js/testing.js\', array( \'jquery\', \'customize-controls\' ), false, true );
}
add_action( \'customize_controls_enqueue_scripts\', \'custom_customize_enqueue\' );
在本测试中。js文件,如果我尝试访问控件的容器,如所示
alert(wp.customize.control(\'text_widget_color_setting\').container.length);
一切正常,警报结果为1,因此我正在通过DOM访问控件。
但如果我试图达到default 控件的容器,如so
alert(wp.customize.control(\'widget_search-2\').container.length);
<我明白了Uncaught TypeError: Cannot read property \'container\' of undefined
我知道我没有定义/创建此default widget控件,但WP有,但此控件有id="customize-control-widget_search-2" ?!
让我抓狂的是,如果我尝试:
alert(wp.customize.section(\'sidebar-widgets-sidebar-1\').controls().length);
DOM可以在这个由WP创建的提要栏-1部分下看到所有默认小部件的控件!
提前感谢您的帮助。
最合适的回答,由SO网友:Weston Ruter 整理而成
您应该等待,直到保证创建控件为止。您应该使用延迟模式:
wp.customize.control(\'widget_search[2]\', function( control ) {
// ...
console.info( control.container );
// ...
});
此外,小部件定制器控件的ID格式为
widget_search[2]
不
widget_search-2
. 请注意与DOM元素ID的区别。