0

当我开始使用此代码段使用 ajax 自动刷新块时,buddypress 上的“喜欢”活动会发生冲突:

myscr.js

jQuery( document ).ready( function() {
    function update() {
      jQuery("#notice").html('Updating...'); 
      jQuery.ajax({
        type: 'GET',
        url: 'http://domain.com/activity',
        data: "recentac=true",
        //timeout: 5000,
        success: function(data) {
          jQuery("#recent-activities").html(data);
          jQuery("#notice").html(''); 
          window.setTimeout(update, 20000);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
          jQuery("#notice").html('Error in connection');
          window.setTimeout(update, 5000);
        }
    });
    }
    update();
});

wp_enqueue_script用来打印我的脚本:

function auto_refresh()
{
    wp_enqueue_script('myscr', get_template_directory_uri().'/myscr.js', array("jquery"), '1.0', true );
}
add_action('wp_enqueue_scripts', 'auto_refresh', 99);

自动引用有效,我注意到在自动刷新之前,“喜欢”有效,之后就无效了!控制台也没有显示任何错误。

任何帮助将不胜感激。

4

1 回答 1

0

嘿,我不确定这是否会有所帮助,但我已经阅读了一些没有冲突的内容,这是链接下的内容,我复制了大部分内容,链接上还有额外的好东西要阅读,所以点击它以获取更多信息。希望这可以帮助

网站链接:http ://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

将 jQuery 置于无冲突模式 当您将 jQuery 置于无冲突模式时,您可以选择分配一个新的变量名来替换 $ 别名。

<!-- Putting jQuery into no-conflict mode. -->
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>

var $j = jQuery.noConflict();
// $j is now an alias to the jQuery function; creating the new alias is optional.

$j(document).ready(function() {
    $j( "div" ).hide();
});

// The $ variable now has the prototype meaning, which is a shortcut for
// document.getElementById(). mainDiv below is a DOM element, not a jQuery object.
window.onload = function() {
    var mainDiv = $( "main" );
}

</script>

在上面的代码中,$ 将恢复到它在原始库中的含义。您仍然可以在应用程序的其余部分中使用完整的函数名称 jQuery 以及新的别名 $j。新别名可以任意命名:jq、$J、awesomeQuery 等。

最后,如果您不想为完整的 jQuery 函数名称定义另一种替代方法(您真的很喜欢使用 $ 并且不关心使用其他库的 $ 方法),那么您还可以尝试另一种方法:只需添加$ 作为参数传递给您的 jQuery( document ).ready() 函数。这最常用于您仍然希望获得真正简洁的 jQuery 代码的好处,但又不想与其他库发生冲突的情况。

    <!-- Another way to put jQuery into no-conflict mode. -->
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>

jQuery.noConflict();

jQuery( document ).ready(function( $ ) {
    // You can use the locally-scoped $ in here as an alias to jQuery.
    $( "div" ).hide();
});

// The $ variable in the global scope has the prototype.js meaning.
window.onload = function(){
    var mainDiv = $( "main" );
}

</script>
于 2013-10-22T01:30:46.930 回答