JQuery用户界面自动完成在WordPress中不起作用?

时间:2012-07-10 作者:Jenny

为了使用jQuery UI自动完成,我加载了以下脚本:

wp_enqueue_script(\'jquery\'); 
wp_enqueue_script(\'jquery-ui-core\');
wp_enqueue_script(\'jquery-ui-widget\'); 
wp_enqueue_script(\'jquery-ui-position\');

wp_enqueue_style( \'jquery-ui-autocomplete\',   $ul .\'/css/jquery-ui-1.8.custom.css\' );
wp_register_script(\'jquery-ui-autocomplete\', $url .\'/js/jquery-ui/jquery.ui.autocomplete.min.js\', array( \'jquery-ui-widget\', \'jquery-ui-position\' ), \'1.8.2\', true );
wp_enqueue_script( \'jquery-ui-autocomplete\', $url .\'/js/jquery-ui/jquery.ui.autocomplete.min.js\', \'1.1\', true );
在完成上述脚本之后,我加载了自己的js,其中包括以下代码:

$(function(){   
    $("#to").autocomplete({
        // code...
   });
});
Firebug显示所有脚本和样式都已加载,并给出错误消息“$不是函数”。如何更正此错误?

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

WordPress不需要jQuery的冲突包装器。

(function($){   
    $("#to").autocomplete({
        // code...
   });
})(jQuery);
或:

jQuery(function(){   
    jQuery("#to").autocomplete({
        // code...
   });
});

SO网友:mybecks

我用于wp\\U enqueue\\U纸条,如下一行:

wp_enqueue_script(\'jquery-ui-autocomplete\', \'\', array(\'jquery-ui-widget\', \'jquery-ui-position\'), \'1.8.6\');
由于jquery ui autocomplete是WP框架的一部分->see here

在我的编码中,我使用自动完成功能的方式与@Chris\\u O提到的相同:

    jQuery(document).ready(function($) {

var availableTags = ["Batman", "Spiderman", "Hulk"];
            $( "#foo" ).autocomplete({
                source: availableTags
            });
    });
加载如此多的脚本(如您的示例中的脚本)是不必要的,因为jquery默认情况下是从wp框架加载的。我建议您在初始化时清理脚本并将其减少到最小值,只加载所需的脚本。请看一下wp codex.

结束

相关推荐

Load jQuery only on home page

我在一个高级wordpress主题中工作。。。这是一个复杂的wordpress主题,有很多管理功能,所以我觉得很难编辑。。。现在我只需要在主页中向上移动一个侧边栏。。。我使用此代码。。。.classname{ position:relative; top:-300; } 但是上面的代码正在移动所有页面上的提要栏。。。由于该网站很复杂,我不知道在主页的侧边栏中添加特定的类名。。。所以我决定使用jQuery来查找页面是否为主页。。。如果是主页,那么我将侧边栏向上移动,