Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX负载破坏我的媒体上传器和颜色选择器?_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript AJAX负载破坏我的媒体上传器和颜色选择器?

Javascript AJAX负载破坏我的媒体上传器和颜色选择器?,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我在wordpress管理页面中使用了选项卡式导航,它本身运行良好(我可以保存数据),现在我想在页面之间切换时添加一些ajax但问题是,当我加载我的选项卡colorpicker和media uploader不再工作时,但我仍然可以保存与media uploader和colorpicker类似的复选框无关的数据 它会正确加载我的表单,但不会加载我的脚本:( 我的AJAX调用如下所示: jQuery(document).ready(function($){ jQuery('.nav-tab').o

我在wordpress管理页面中使用了选项卡式导航,它本身运行良好(我可以保存数据)

,现在我想在页面之间切换时添加一些ajax

但问题是,当我加载我的选项卡colorpicker和media uploader不再工作时,

但我仍然可以保存与media uploader和colorpicker类似的复选框无关的数据

它会正确加载我的表单,但不会加载我的脚本:(

我的AJAX调用如下所示:

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

jQuery('.nav-tab').on('click', function(e){

e.preventDefault();

jQuery('.form_options').fadeOut().load(jQuery(this).attr('href') + ' .form_options',function(){
jQuery('.form_options').fadeIn();
});/*End load callback function*/

});/*End click function*/
});
我正在使用此代码调用管理页面中的脚本:

add_action( 'admin_init', 'register_override_theme_js' );
function register_override_theme_js() {
    /* Register our main Admin js script. */
    $file_dir = get_template_directory_uri();
    wp_register_script( 'my-admin-script', $file_dir . '/js/admin_ajax.js', false, '1.0' );
    /*Register our Iris Colorpicker js script. */
    wp_register_script( 'my-color-picker', $file_dir . '/js/colorpicker_script.js', array( 'wp-color-picker' ), false, true );

    /* Register our uploader js script. */
    wp_register_script( 'uploader', $file_dir . '/js/uploader.js', false, '1.0' );
}



function my_plugin_admin_scripts() {
    /* Link our already registered script to a page */
    wp_enqueue_script( 'my-admin-script' );
    wp_enqueue_script( 'uploader' );
    wp_enqueue_script( 'my-color-picker' );
        if ( ! did_action( 'wp_enqueue_media' ) ){
        wp_enqueue_media();
        }
    }

 function my_plugin_admin_styles() {
    /* Link our already registered css to a page */
    wp_enqueue_style( 'admin_style' );
    wp_enqueue_style( 'wp-color-picker' );
    }

有人知道我做错了什么吗?欢迎提出任何想法或建议。谢谢!

我想说,你的问题是,如果你用AJAX加载每个选项卡,那么颜色选择器和媒体上传器javascript没有正确初始化

让我澄清一下:

没有AJAX:

已加载所有脚本-其中可能包含document.ready子句,并单击非“实时”事件的事件-(单击而不是.on)

当所有元素都存在于DOM中时,当您在一开始就拥有页面上的所有内容时,这些功能就可以正常工作

使用AJAX:

一次加载1个“选项卡”

您的所有javascript都已加载

这意味着选项卡2和3 HTML尚未出现在页面上

任何非活动的选择器:

$('#colourpicker').click()
如果在第一次加载时页面上不存在
id=“colorpicker”
,则将不起作用

两种解决方案:

编辑所有要使用的代码。在上而不是。单击(在您正在使用的任何库中)

在AJAX调用期间动态加载javascript

希望这是清楚的