这是我第一次在stackOverflow上发帖,我真的希望我不会搞砸它。
我正在使用Compass,Foundation和jQuery构建一个网站,我的代码存在问题:
$(document).ready(function(){
function navOn(){
//var navWidth = $('nav').outerWidth();
//var contentWidth = $('.feed').outerWidth();
$('.innerWrap').toggleClass('is-nav');
$('.post').toggleClass('is-nav');
$('.nav-main').toggleClass('is-nav');
console.log("fu");
};
$('#tempSwitch').click(navOn());
if($('.nav-main').hasClass('is-nav')){
$('.feed').click(navOn());
}
$('.nav-menu a').on('click', function(){
$('.nav-menu a').removeClass('is-active');
$(this).addClass('is-active');
})
});
当我加载文档时,我得到两个控制台日志(意味着函数运行了两次),但是当我实际点击我指定的触发器时没有任何反应。
关于为什么这不起作用的任何想法?
修改 非常感谢你的回答。
但是,我试图理解为什么,当我打开控制台并尝试运行navOn()时,我得到了 ReferenceError:未定义navOn
另外,
if ($('.nav-main').hasClass('is-nav')){
$('.feed').click(navOn);
}
似乎不起作用。
非常感谢您提前
答案 0 :(得分:6)
在您的点击绑定中,您应该传递对navOn
函数对象的引用。目前,您正在调用 navOn
函数,并将结果(undefined
)传递到click()
活页夹中,由于显而易见的原因,这将无效。< / p>
您只需从navOn()
:
...
$('#tempSwitch').click(navOn); // <= here
if ($('.nav-main').hasClass('is-nav')){
$('.feed').click(navOn); // <= and here
}
...
答案 1 :(得分:3)
从点击功能navOn()
($().click(navOn))
的parens
答案 2 :(得分:0)
回调期望传递指针。你正在做的是实际调用函数而不是提供它的引用。
它应该是这样的:
$('.feed').click(navOn);
答案 3 :(得分:0)
这是因为您没有将函数传递给click处理程序,而是实际上是在调用该处理程序。
而不是
$('#tempSwitch').click(navOn());
尝试
$('#tempSwitch').click(navOn);
答案 4 :(得分:0)
将其更改为
$('#tempSwitch').click(navOn);
现在你正在调用该函数,而不是将其设置为处理程序。