Javascript 如何将这两条语句合并为一条语句?
我怎样才能把这两条语句合并成一条语句呢。他们就像在镜子里一样工作。 我正在努力使代码看起来更好、更简单。 非常感谢您的帮助Javascript 如何将这两条语句合并为一条语句?,javascript,jquery,Javascript,Jquery,我怎样才能把这两条语句合并成一条语句呢。他们就像在镜子里一样工作。 我正在努力使代码看起来更好、更简单。 非常感谢您的帮助 $('#q_login_dialog #menu-register').click(function() { $('#q_login_dialog #menu-login').removeClass('q_dialog_panel_item_active'); $('#q
$('#q_login_dialog #menu-register').click(function() {
$('#q_login_dialog #menu-login').removeClass('q_dialog_panel_item_active');
$('#q_login_dialog #menu-register').addClass('q_dialog_panel_item_active');
$('#q_dialog_login input[type!=hidden]').val('');
$('#q_dialog_reset input[type!=hidden]').val('');
$('#q_dialog_login').hide();
$('#q_dialog_reset').hide();
$('#q_dialog_register').show();
$('#q_dialog_register input[name=email]').focus();
$('#q_dialog_login input').blur();
$('#q_dialog_login span').html('');
what = 'register';
});
$('#q_login_dialog #menu-login').click(function() {
$('#q_login_dialog #menu-register').removeClass('q_dialog_panel_item_active');
$('#q_login_dialog #menu-login').addClass('q_dialog_panel_item_active');
$('#q_dialog_register input[type!=hidden]').val('');
$('#q_dialog_reset input[type!=hidden]').val('');
$('#q_dialog_register').hide();
$('#q_dialog_reset').hide();
$('#q_dialog_login').show();
$('#q_dialog_login input[name=email]').focus();
$('#q_dialog_register input').blur();
$('#q_dialog_register span').html('');
what = 'login';
});
两者之间的唯一区别似乎是使用
注册
与登录
,这应该很容易参数化:
function makeClickHandler(type, subtype) {
return function() {
$('#q_login_dialog #menu-' + subtype)
.removeClass('q_dialog_panel_item_active');
$(this).addClass('q_dialog_panel_item_active');
$('#q_dialog_' + subtype + ' input[type!=hidden]').val('');
$('#q_dialog_reset input[type!=hidden]').val('');
$('#q_dialog_' + subtype).hide();
$('#q_dialog_reset').hide();
$('#q_dialog_' + type).show();
$('#q_dialog_' + type + ' input[name=email]').focus();
$('#q_dialog_' + subtype + 'input').blur();
$('#q_dialog_' + subtype + 'span').html('');
what = type;
}
}
$('#q_login_dialog #menu-register').click(makeClickHandler("register", "login"));
$('#q_login_dialog #menu-login').click(makeClickHandler("login", "register"));
我的眼睛可能忽略了另一个不同点,但我认为这就是它(如果没有,你应该看到总体思路)。你必须使用变量函数和闭包:
var my_fct = function (action1, action2) {
// here comes the closure
return function() {
$('#q_login_dialog #menu-'+action2).removeClass('q_dialog_panel_item_active');
$('#q_login_dialog #menu-'+action1).addClass('q_dialog_panel_item_active');
$('#q_dialog_'+action2+' input[type!=hidden]').val('');
$('#q_dialog_reset input[type!=hidden]').val('');
$('#q_dialog_'+action2).hide();
$('#q_dialog_reset').hide();
$('#q_dialog_'+action1).show();
$('#q_dialog_'+action1+' input[name=email]').focus();
$('#q_dialog_'+action2+' input').blur();
$('#q_dialog_'+action2+' span').html('');
what = action1;
};
};
$('#q_login_dialog #menu-register').click( my_fct('register', 'login') );
$('#q_login_dialog #menu-login').click( my_fct('login', 'register') );
在事件处理程序中,您可以使用
this
访问单击的元素。对于其余部分,如果您也显示HTML,则会更容易。一般来说,使用类可以更容易地对多个元素执行相同的操作。除了代码中的任何差异外,您只需创建一个新函数即可完成所有这些操作。另外,如果您在一条语句中有两个ID选择器(如:“q#U登录#对话框#菜单寄存器”),请注意你做错了事情。