Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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 我的jquery代码不起作用。为什么?_Javascript_Jquery_Function_Object - Fatal编程技术网

Javascript 我的jquery代码不起作用。为什么?

Javascript 我的jquery代码不起作用。为什么?,javascript,jquery,function,object,Javascript,Jquery,Function,Object,这是我的jquery代码,它不起作用。我真的不知道为什么。请帮助我,并告诉我如何修复它 $(function () { var panel = function () { var init = function () { console.log('hello'); }; return { init: init } }; $('.nav

这是我的jquery代码,它不起作用。我真的不知道为什么。请帮助我,并告诉我如何修复它

$(function () {
    var panel = function () {
            var init = function () {
                console.log('hello');
            };

        return {
            init: init
        }
    };

    $('.nav li a').on('click', function (e) {
        panel.init();
    });

})();
我在控制台中收到此错误

Object function () {
    var panel = function () {
        var init = function () {
            console.log('hello');
        }
    };

    return {
        init: init
    }
} has no method 'init' 

我认为您缺少了面板函数声明末尾的括号

var panel = function () {
    var panel = function () {
        var init = function () {
            console.log('hello');
        }
    };

    return {
        init: init
    }
}();

确保右括号后面紧跟着
()

您的init函数位于另一个功能面板中。这是无法从外部访问的。
当您想要返回init方法时,如果您知道我的意思,那么您必须将init函数提高一个级别。

也许您应该看看如何在Javascript中定义类:



我猜面板应该使用即时调用:

$(function () {
    var panel = (function () {
            var init = function () {
                console.log('hello');
            };

        return {
            init: init
        }
    })();

    $('.nav li a').on('click', function (e) {
        panel.init();
    });

})();
代码将立即执行,并将对象返回到
面板
变量。因此,
面板
拾取一个
init
属性。

我只需执行以下操作:

$(function () {
    var panel = {
        init: function () {
            console.log('hello');
        }
    }

    $('.nav li a').on('click', function (e) {
        panel.init();
    });
});​


似乎更像是您正在尝试执行的操作?

在本例中,面板是一个回调,而此回调返回另一个回调,
init
,因此您必须将()放在两个回调周围,尝试以下操作:

$(function () {
    var panel = function () {
        var init = function () {
            console.log('hello');
        };

        return {
            init: init
        }
    };

    $('.nav li a').on('click', function (e) {
        panel().init();
    });

})();

你的html是什么样子的?您会遇到什么错误?为什么有两个同名函数?“panel”
init
panel.panel
的成员,但不是
panel
的成员。是的,这是我的错误,现在我修复了代码,但仍然是相同的错误。
$(function () {
    var panel = {
        init: function () {
            console.log('hello');
        }
    }

    $('.nav li a').on('click', function (e) {
        panel.init();
    });
});​
$(function () {
    var panel = function () {
        var init = function () {
            console.log('hello');
        };

        return {
            init: init
        }
    };

    $('.nav li a').on('click', function (e) {
        panel().init();
    });

})();