调整jquery函数以使用当前的wp jquery版本

时间:2016-05-30 03:47:08

标签: jquery wordpress cloudflare

我使用cloudflare来缓存我的wordpress网站。

但是,我需要登录用户绕过cloudflare缓存,以便获取最新内容。

为此,我为登录用户设置了一个cookie,如果该cookie存在,我会将“bypass = 1”附加到页面上的每个URL。然后我将cloudflare设置为绕过任何带有该参数的url。

我一直在页面上的网址中添加bypass = 1,如下所示:

<script>
    if (document.cookie.indexOf("cachen") > -1) {
        $(function() {
            $("a").prop("href", function() {
                var url = $(this).prop("href");
                if (url.indexOf('#') == -1) {
                    if (url.indexOf('?') == -1) {
                        return url + "?bypass=1";
                    }
                }
            });
        });
    }
</script>

但是在最近的WordPress更新之后,它停止了工作。

我发现我可以在函数之前加上:

<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>

并且代码可以工作....但是后来我开始遇到一些插件的问题。

我当前的wordpress使用jquery.js?ver = 1.12.3

我认为问题是函数中的某些东西与更新的jquery版本不兼容,但我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用jQuery.noConflict();

以下是适用于我的代码片段:

<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
    var noConflict3 = jQuery.noConflict(); // Assign and use noConflict mode
    noConflict3(document).ready(function() {
        // My code here
    });
    $ = jQuery.noConflict(); // Had to assign it back, otherwise WP was full of JS errors
</script>

这是jQuery noConflict doc:Link

它对我有用,我希望它也适合你:)

答案 1 :(得分:0)

哦,找到了解决方案。

我在Chrome中的开发者工具中发现我收到了消息:

  

?bypass = 1:1202 Uncaught TypeError:$不是函数(匿名   功能)@?bypass = 1:1202

我抬起头来发现:

Uncaught TypeError: undefined is not a function (anonymous function) in Wordpress

说:

  

Wordpress默认以noConflict模式运行,更改DOM   准备包装

jQuery(function($){ 

    // your code goes here

});
     

否则$将是未定义的

这就是诀窍,我现在能够删除旧版本的jquery并且代码可以工作。