我在写一些我的第一个JQuery代码时遇到了问题。我正在尝试一些Codecademy的东西,只是搞乱并看看它是如何工作的。现在我对匿名函数的问题非常困惑:匿名调用函数但是命名函数并且按名称调用它不会。代码应该在点击图标时从屏幕左侧打开一个菜单,并将页面的其余部分向右移动;然后单击关闭图标执行相反操作。第一个代码块工作正常,第二个代码块在页面加载后立即打开并关闭菜单,然后什么都不做。关于JS / JQuery中的操作顺序还有什么我缺少的东西?
匿名:
function main() {
$('.icon-menu').click(function() {
$('.menu').animate({left:'0px'}, 200);
$('body').animate({left:'285px'}, 200);
});
$('.icon-close').click(function() {
$('.menu').animate({left:'-285px'}, 200);
$('body').animate({left:'0px'}, 200);
});
}
命名:
function main() {
$('.icon-menu').click(open());
$('.icon-close').click(close());
}
function open() {
$('.menu').animate({left:'0px'}, 200);
$('body').animate({left:'285px'}, 200);
}
function close() {
$('.menu').animate({left:'-285px'}, 200);
$('body').animate({left:'0px'}, 200);
}
感谢任何能够启发我的人。
答案 0 :(得分:1)
你有
$('.icon-menu').click(open());
()
调用一个函数。
您立即致电open
,然后将其返回值(undefined
)传递给click
。
删除()
并改为传递函数。
答案 1 :(得分:1)
删除括号。 open()
和close()
调用函数,但您只想传递对函数的引用。
function main() {
$('.icon-menu').click(open);
$('.icon-close').click(close);
}
答案 2 :(得分:0)
在clickhandler中的函数之后删除括号,因为您正在使用此语法执行它们。