我有一个功能,我想用它来扩展各个地方的菜单。我希望它可以通过单击菜单相关按钮来触发,但是此时它正在页面加载时被调用(我假设从文档准备就绪),并且添加了类'expanded'而没有单击一个按钮。我很困惑为什么会发生这种情况,因为它应该被称为.on('click' ..
jQuery(document).ready(function ($) {
'use strict';
$('#btn-expand-mobile-nav').on('click', showMenu('#side-navigation'));
});
function showMenu(menu) {
var x = $(menu),
y = 'expanded';
if (x.hasClass(y))
x.removeClass(y);
else
x.addClass(y);
}
答案 0 :(得分:4)
您正在立即调用此功能。而是使用匿名函数推迟执行:
[7190:0501/233446:ERROR:browser_main_loop.cc(170)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
如果没有参数,可以完成此操作:
$('#btn-expand-mobile-nav').on('click', function(){
showMenu('#side-navigation')
});
$('#btn-expand-mobile-nav').on('click', showMenu);
的简单解释:
单独使用函数名称,您指向变量@skobaljic
并稍后将其称为函数。
通过使用你所说的showMenu
,这是一个临时变量,包含一个函数,你可以稍后调用。
e.g。它与:
相同function(){}
正如var temp = function(){
showMenu('#side-navigation')
}
$('#btn-expand-mobile-nav').on('click', temp); // No parenthesis on temp
正确指出的那样,可以使用@Dave Newton
简化:
toggleClass