Jquery 加载Ajax后启动Wordpress插件/快捷码

Jquery 加载Ajax后启动Wordpress插件/快捷码,jquery,ajax,wordpress,shortcode,Jquery,Ajax,Wordpress,Shortcode,我有一个网站通过Ajax加载其主要内容,但我遇到了一个问题,无法加载所述内容中的任何插件/短代码。如果我通过url栏直接加载每个页面,插件就可以正常工作 Ajax代码 jQuery(document).ready(function() { var History = window.History; if (!History.enabled) { return false; } // Bind to StateChange Event Hi

我有一个网站通过Ajax加载其主要内容,但我遇到了一个问题,无法加载所述内容中的任何插件/短代码。如果我通过url栏直接加载每个页面,插件就可以正常工作

Ajax代码

jQuery(document).ready(function() {
    var History = window.History;
    if (!History.enabled) {
        return false;
    }

    // Bind to StateChange Event
    History.Adapter.bind(window,'statechange',function(){ 
      var State = History.getState(); 
      //History.log(State.data, State.title, State.url);
      var goto_url = State.url;   
      jQuery('.content').load(goto_url+ ' #main').hide().delay(750).fadeIn(1000); 
    });

    jQuery('.main-menu a').click(function(evt){
        var href = jQuery(this).attr('href');
        History.pushState({}, '', href);

        var elementClassName = jQuery(this).attr('class');
        jQuery('.main-menu a').removeClass('active');
        jQuery('.main-menu a.'+elementClassName).addClass('active');

        jQuery('.content').load(href+ ' #main',
            function() { 
                jQuery(this).fadeIn(750);
            });
         return false;
    });
});
我希望运行特定于页面的短代码

<?php echo do_shortcode('[shortcode goes here]'); ?>

这不是最优雅的解决方案,但取决于您尝试重新初始化的插件/短代码,您可以通过适当的jQuery初始化在.load回调中为许多插件/短代码重新初始化

$(“#result”).load(“ajax/test.html”,function()){
/*把re-init代码放在这里*/
});

例如,对于flex滑块:

jQuery('.slider-<?php echo $slider->ID; ?>').flexslider({
                                      animation: "<?php echo $animation; ?>",
                                      easing: "swing",
                                      direction: "<?php echo $direction; ?>",
                                      slideshowSpeed: "<?php echo $slideshow_speed; ?>",
                                      animationSpeed: "<?php echo $animation_speed; ?>",
                                      controlNav: <?php echo $control_nav; ?>,               
                                      directionNav: <?php echo $directional_nav; ?>,  
                                      pauseOnAction: <?php echo $action; ?>,
                                      pauseOnHover: <?php echo $hover; ?>,
                                      useCSS: false
                                          });

您将无法从浏览器运行要运行的短代码。当服务器响应AJAX请求时,它们需要已经运行。您可以发布响应AJAX的php代码吗?您需要确保服务器首先处理所有内容……正如manishie提到的,我们需要查看php代码来帮助您完成这项工作。最有可能的是,您可以利用ajax处理程序(即处理此请求的ajax php函数)中的输出缓冲区来处理短码php并将其存储在字符串中。然后,返回该字符串,这样就可以使用jquerysuccess函数将从服务器返回的字符串放在文档中的适当位置。
jQuery('.slider-<?php echo $slider->ID; ?>').flexslider({
                                      animation: "<?php echo $animation; ?>",
                                      easing: "swing",
                                      direction: "<?php echo $direction; ?>",
                                      slideshowSpeed: "<?php echo $slideshow_speed; ?>",
                                      animationSpeed: "<?php echo $animation_speed; ?>",
                                      controlNav: <?php echo $control_nav; ?>,               
                                      directionNav: <?php echo $directional_nav; ?>,  
                                      pauseOnAction: <?php echo $action; ?>,
                                      pauseOnHover: <?php echo $hover; ?>,
                                      useCSS: false
                                          });
$('.asset-audio').mediaelementplayer({videoHeight: 30,  videoWidth: 0, alwaysShowControls: true,
    features: ['playpause','progress','current','duration','volume'],
});