这是我的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'
答案 0 :(得分:2)
也许你应该看看如何在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();
});
答案 1 :(得分:0)
我认为你缺少面板功能声明结束时的括号。
var panel = function () {
var panel = function () {
var init = function () {
console.log('hello');
}
};
return {
init: init
}
}();
确保右括号后跟()
答案 2 :(得分:0)
你的init函数在另一个功能面板中。这是从外面无法到达的。 当你想要返回init方法时,如果你知道我的意思,你必须把init函数放得更高。
答案 3 :(得分:0)
我猜这个小组应该使用立即调用:
$(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
属性。
答案 4 :(得分:0)
我会这样做:
$(function () {
var panel = {
init: function () {
console.log('hello');
}
}
$('.nav li a').on('click', function (e) {
panel.init();
});
});
似乎更像是你想要做的事情?
答案 5 :(得分:0)
在这种情况下,面板是一个回调,这个回调返回另一个回调init
,所以你必须在两个回调周围放置(),试试这个:
$(function () {
var panel = function () {
var init = function () {
console.log('hello');
};
return {
init: init
}
};
$('.nav li a').on('click', function (e) {
panel().init();
});
})();