【问题标题】:Reload inline javascript after wordpress makes ajax call在wordpress进行ajax调用后重新加载内联javascript
【发布时间】:2012-08-18 15:46:34
【问题描述】:

我有一个问题,我希望有人可以帮助我,这里是:

使用本教程:http://www.problogdesign.com/wordpress/load-next-wordpress-posts-with-ajax/ 我能够在不刷新浏览器的情况下动态加载帖子!

到目前为止一切顺利!

我什至对代码进行了一些定制,并将其与 jQuery Isotope 集成。

到目前为止一切顺利!

custom.js 文件中包含所有代码,以及我为 prettyPhoto 创建的一堆函数以及我在“加载更多”中使用的点赞脚本(例如 prettyPhoto();, postlike(); ' 代码,以便在添加帖子后'重新加载'。

到目前为止一切顺利!

顺便说一句,它使用以下代码完成:

jQuery('#content .isotope').append($newEls).isotope('append', $newEls, function() {

漂亮的照片(); postlike();

等等

创建函数以便以后使用它们是没有问题的,现在这是真正的问题:例如,我有一堆用于 jplayer 和 flexslider 的内联 javascript,在添加帖子后我无法重新加载,因为我无法创建我以后可以使用的函数(就像我为 prettyphoto 和 postlike 所做的那样),因为 jplayer 和 flexslider 的代码在不同的文件中。

Jplayer 使用如下代码为例:

<script type="text/javascript">
jQuery(document).ready(function($) {

    if(jQuery().jPlayer) {
        jQuery('#jquery_jplayer_<?php the_ID(); ?>').jPlayer({
            ready: function() {
                jQuery(this).jPlayer('setMedia', {
                    mp3: "<?php echo stripslashes(htmlspecialchars_decode($mp3)); ?>",
                    oga: "<?php echo stripslashes(htmlspecialchars_decode($ogg)); ?>",
                    end: ""
                    });
                },
            swfPath: "<?php echo get_template_directory_uri(); ?>/js/jplayer/",
            cssSelectorAncestor: "#jp_container_<?php the_ID(); ?>",
            supplied: "<?php if($mp3 != '') : ?>mp3, <?php endif; ?><?php if($ogg != '') : ?>oga, <?php endif; ?> all"
        });
    }

});
</script>

注意 jPlayer 是使用唯一标识符调用的:#jquery_jplayer_

我的问题是:我如何重新加载这个“内联 javascript”,以便在我动态添加新帖子后它可以工作?

我希望以上内容有意义,如果不是很高兴详细说明!

编辑:

    jQuery( '#load-posts a' ).live( 'click', function(e) {

        // Are there more posts to load?
        if(pageNum <= max) {

            // Show that we're working.
            jQuery(this).text( 'Loading...' );


                jQuery( '#content .isotope-new' ).load(nextLink + ' .item',
                function() {



                    var $newEls = jQuery( '#content .isotope-new .item' );

                    $newEls.imagesLoaded( function(){

                    jQuery( '#content .isotope' ).append($newEls).isotope( 'appended', $newEls, function() {

【问题讨论】:

    标签: jquery ajax wordpress call reload


    【解决方案1】:

    首先,您需要删除旧脚本,以确保不会两次加载它。提供重新初始化类所需的任何脚本:

    &lt;script class="my-script"&gt;

    $('.my-script').remove

    然后使用getScript:

    http://api.jquery.com/jQuery.getScript/

    ajaxify.js 脚本在这方面做得很好,因此您可以研究一下它的源代码以了解它们是如何做到的:https://github.com/browserstate/ajaxify 在第 124 行,然后在第 154 行

    【讨论】:

    • 感谢您的 Awnser,我会将 .remove 代码放在上述编辑中的什么位置?似乎也无法弄清楚如何使用 getScript!这非常令人沮丧,因为内联 javascript 是唯一不起作用的东西!
    • 取得了一些进展:jQuery( '.flexslider', this).flexslider();在使用 AJAX 加载新帖子后初始化 flexslider。唯一不工作的是 jPlayer!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2013-09-11
    • 1970-01-01
    • 2019-09-30
    • 2014-06-21
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多