Javascript “如何修复”;“未定义”不是一个函数;在WordPress中
我正在将一个超级菜单从HTML/CSS/JavaScript转换为WordPress。我已经创造了一个工作步行机,一切都准备好了。问题是,我无法让JavaScript正常工作。JavaScript应该触发顶级Javascript “如何修复”;“未定义”不是一个函数;在WordPress中,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,我正在将一个超级菜单从HTML/CSS/JavaScript转换为WordPress。我已经创造了一个工作步行机,一切都准备好了。问题是,我无法让JavaScript正常工作。JavaScript应该触发顶级li在单击时打开一个大菜单部分,并在再次单击时将其关闭 我使用了以下JavaScript文件: var swMegaMenu = (function() { var $listItems = $( '#sw-hrmenu > ul > li' ), $m
li
在单击时打开一个大菜单部分,并在再次单击时将其关闭
我使用了以下JavaScript文件:
var swMegaMenu = (function() {
var $listItems = $( '#sw-hrmenu > ul > li' ),
$menuItems = $listItems.children( 'a' ),
$body = $( 'body' ),
current = -1;
function init() {
$menuItems.on( 'click', open );
$listItems.on( 'click', function( event ) { event.stopPropagation(); } );
}
function open( event ) {
if( current !== -1 ) {
$listItems.eq( current ).removeClass( 'sw-hropen' );
}
var $item = $( event.currentTarget ).parent( 'li' ),
idx = $item.index();
if( current === idx ) {
$item.removeClass( 'sw-hropen' );
current = -1;
}
else {
$item.addClass( 'sw-hropen' );
current = idx;
$body.off( 'click' ).on( 'click', close );
}
return false;
}
function close( event ) {
$listItems.eq( current ).removeClass( 'sw-hropen' );
current = -1;
}
return { init : init };
})();
var swMegaMenu = (function() {
var $listItems = $( '#sw-hrmenu > ul > li' ), // Uncaught TypeError: Undefined is not a function
$menuItems = $listItems.children( 'a' ),
$body = $( 'body' ),
current = -1;
我在footer.php中插入了以下内容:
<script>
$(function() {
swMegaMenu.init();
});
</script>
<script>
$(function() { // Uncaught TypeError: Undefined is not a function
swMegaMenu.init();
});
</script>
尝试以下代码
(函数($){//Uncaught TypeError:Undefined不是函数
swMegaMenu.init();
})(jQuery);
您使用的是WordPress的默认jQuery实例,但没有使用
在noConflict()
模式下,jQuery的全局$
快捷方式不可用。这就是您看到未定义的错误的原因
要纠正此问题,您需要将$
的所有实例替换为jQuery
,或者用包装器包装整个函数集。例如:
(function($) {
// Inside of this function, $() will work as an alias for jQuery()
// and other libraries also using $ will not be accessible under this shortcut
})(jQuery);
阅读更多信息。您如何包括jquery?WordPress默认运行它。是的,看起来您没有jQuery。WordPress allready不是运行jQuery吗?我是这样排队的脚本,依赖关系为1.9.1:wp_register_script('megamenu js',get_template_directory_uri()。/inc/megamenu/swMegaMenu.js',array('jquery'),'1.9.1',true);wp_排队_脚本('megamenu js')@Stokken是的,默认情况下WordPress已经让jQuery排队了。看看我的答案,为什么它对你不起作用。谢谢你的回答:)我已经试过了。但是我得到了这个错误istead:(函数($){//无法读取未定义的swMegaMenu.init();})的属性'init'(jQuery);如果您不再收到未定义的错误,我的答案可以解决您的问题。如果是这种情况,请选择此问题作为已解决问题,然后打开一个新问题,其中包含您遇到的新问题。是的,我将:)但我仍然在javascript文件中收到未定义的错误。我应该把整个文件也包起来吗?也尝试过普密沙阿写的东西。但是没有解决该文件中未定义的情况。您的第二个错误与jQuery无关,它表明您的Mega菜单脚本没有正确加载。我已经尝试过了。但是我得到了这个错误istead:(函数($){//uncaughttypeerror:Undefined不是一个函数swMegaMenu.init();})(jQuery);你犯了什么错误?