Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “如何修复”;“未定义”不是一个函数;在WordPress中_Javascript_Jquery_Wordpress - Fatal编程技术网

Javascript “如何修复”;“未定义”不是一个函数;在WordPress中

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

我正在将一个超级菜单从HTML/CSS/JavaScript转换为WordPress。我已经创造了一个工作步行机,一切都准备好了。问题是,我无法让JavaScript正常工作。JavaScript应该触发顶级
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);你犯了什么错误?