我试图用一些简单的jQuery脚本测试我的wordpress页面,但它不起作用。
我在脚本中加载了wp_enqueue_script(\'jquery\');
在里面functions.php
如中所述wordpress guide 但有些东西有问题。
我正在使用FireBug
安装于Firefox 4
如果我查看一下加载的脚本列表,就可以了,但它也会返回错误jQuery is not defined
也
我已经按照noConflict
模式,但对我仍然不起作用:
// functions.php
<?php
function init_scripts () {
if (!is_admin()) {
wp_enqueue_script(\'jquery\');
}
}
add_action(\'init\', \'init_scripts\');
?>
// header.php
<script type="text/javascript">
(function($) {
$(document).ready(function() {
alert(\'hello?\');
});
}(jQuery));
</script>
我错在哪里?
我试过了this tutorial 而且据说这里没有定义jQuery对象:
// jquery from ajax.googleapis.com is correctly loaded
$j=jQuery.noConflict(); // firebug says jQuery is not defined by here
$j(document).ready(function(){
alert(\'test\');
});
最合适的回答,由SO网友:Chris_O 整理而成
jQuery需要在包装器之外,如下所示:
<script type="text/javascript">
(function($) {
$(document).ready(function() {
alert(\'hello?\');
});
})(jQuery);
</script>
编辑:
A better way would be:jQuery(document).ready(function($) {
// $() will work as an alias for jQuery() inside of this function
});
还要确保所有内联脚本标记
AFTER 您的呼叫
wp_head();
And even better way:
创建函数,而不是内联添加脚本标记。包含所有额外函数等的js文件。将其作为依赖项与jQuery排队。
add_action( \'template_redirect\', \'c3m_enqueue_scripts\' );
function c3m_enqueue_scripts() {
wp_register_script( \'custom-functions\', TEMPLATEPATH .\'/path/to/functions.js\', array( \'jquery\' ) TRUE);
wp_enqueue_script( \'jquery\' );
wp_enqueue_script( \'custom-functions\' );
}
SO网友:Shelly
您的init调用是正确的,它将加载jQuery,其中wp\\u head()调用位于标头中。php文件。
在标头中的wp\\u head()调用之后。php文件,添加:
<script type="text/javascript">
jQuery(document).ready(function($){
alert(\'hello?\');
});
</script>
将$放在function()部分中,将允许您使用常规$,而不会发生冲突。