繁体   English   中英

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

[英]my jquery code doesnt work. why?

这是我的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' 

也许你应该看看如何在Javascript中定义一个类:

http://www.phpied.com/3-ways-to-define-a-javascript-class/

var panel = {
    init: function () {
        alert("Hello!");
    }
}

panel.init();

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

我认为你缺少面板函数声明结束时的括号。

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

    return {
        init: init
    }
}();

确保右括号后跟()

您的init函数位于另一个功能面板中。 这是从外面无法到达的。 当你想要返回init方法时,如果你知道我的意思,你必须把init函数放得更高。

我猜这个小组应该使用立即调用:

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

        return {
            init: init
        }
    })();

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

})();

代码将以imeediately方式执行并将对象返回到panel变量。 因此, panel获得了init财产。

我会这样做:

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

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

小提琴

看起来更像你想要做的事情?

在这种情况下,面板是一个回调,这个回调返回另一个回调, init ,所以你必须在两个回调周围put(),试试这个:

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

        return {
            init: init
        }
    };

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

})();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM