通过定制器预览导航保留Java脚本

时间:2016-09-23 作者:Howdy_McGee

在Customizer中,可以添加一些javascript并将控件传输到refresh 因此,每当用户更改设置时,它都会自动反映到网站预览面板上:

// Body Background Color
wp.customize( \'body_bgr_color\', function( control ) {
    control.bind( function( value ) {
        $( \'body\' ).css( \'background-color\', hex2rgba( value, 1 ) );
    } );
} );
我正在使用customize_preview_init

每当用户使用主导航转到下一页时,就会出现此问题-javascript更改将丢失,但保留在控件窗格中。当用户导航到新的预览页面时,如何保留或重新运行javascript?

1 个回复
最合适的回答,由SO网友:Howdy_McGee 整理而成

由于我将所有内容都保存在硬保存(单击按钮)上,因此我试图避免通过ajax更新所有选项。下面所做的是,在预览窗格设置JS绑定时,我触发一个“更改”,将控件值重新应用于元素。我当然愿意接受更好的选择,但这在我的情况下奏效了:

jQuery( document ).ready( function( $ ) {

    // Body Background Color
    wp.customize( \'body_bgr_color\', function( control ) {
        control.bind( function( value ) {
            $( \'body\' ).css( \'background-color\', hex2rgba( value ) );
        } );
        $( control ).trigger( \'change\' );
    } );
} );