WordPress提供的jQuery中的奇怪之处

时间:2013-02-22 作者:He Shiming

我对WordPress提供的jQuery有问题。以下HTML显示了此问题:

<!DOCTYPE html>
<html>
    <head>
        <script src=\'http://wordpress.myownserver/wp-includes/js/jquery/jquery.js?ver=1.8.3\'></script>
    </head>
<body>
    <div id="something"></div>
    <script>if(window.jQuery) console.log("window.jQuery");</script>
    <script>window.jQuery || document.write(\'<script src="/res/jquery-1.8.3.min.js"><\\/script>\')</script>
    <script>
        $(document).ready(function () {
            $(\'#something\').html(\'something\');
        });
    </script>
</body>
这是我的WordPress站点中的典型情况,其中WordPress的jQuery(用于管理栏)包含在<head>, 并且我自己的CDN/fallback jQuery在</body>.

此页面的控制台输出为:

window.jQuery
Uncaught TypeError: Property \'$\' of object [object Object] is not a function 
我可以用几种方法解决这个问题,例如,我可以替换jQuery<script> 参与<body> 收件人:

<script src="/res/jquery-1.8.3.min.js"></script>
没有window.jQuery 检查但考虑到我已经两次包含jQuery,这并不是最优的。然后我试着更换<script> 在里面<head> 收件人:

<script src="/res/jquery-1.8.3.min.js"></script>
令人惊讶的是,这也解决了问题。我知道wp_deregister_script, 但对于admin,这也会禁用仪表板中的jQuery。

我想为管理员保留管理员栏。因此,目前该站点只有在管理员登录时才会中断(请参见上面的控制台输出)。我想知道WordPress提供的jQuery是否有什么特别之处。我正在使用版本3.5.1,我计划在我自己的主题中使用jQuery。为了解决这个问题,我应该只包含两次吗?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

与WordPress提供的jQuery版本不同,在Codex页面上的大纲为wp_enqueue_script:

注意:WordPress附带的jQuery库以“无冲突”模式加载。这是为了防止与WordPress可以加载的其他javascript库的兼容性问题。

更改脚本以引用jQuery对象jQuery 而不是$, 将jQuery对象传递为$ 因此,您可以在以下范围内正常使用它:

jQuery(document).ready(function($) {
    $(\'#something\').html(\'something\');
});

结束

相关推荐

JQuery-UI-Datepicker的内置样式

我想在网站前端使用与WordPress捆绑在一起的日期选择器。我排队了jquery-ui-datepicker 但是datepicker没有样式化(控制台中没有js错误)。是否有相应的wp_enqueue_style 为了这个?我在中使用了此代码functions.phpfunction rr_scripts() { wp_enqueue_script( \'jquery\' ); wp_enqueue_script( \'jquery-ui-datepicker\', array