我怎么把这两个表述变成一个表述呢?
How can I put this two statements into one statement?
如何将这两条语句合并成一条语句呢?它们的工作原理有点像镜子。我试图使代码看起来更好和简单。任何帮助都是非常感谢的。
$('#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';
});
两者之间的唯一区别似乎是使用register
和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') );
相关文章:
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 一个ajax循环有两个输出错误innerHTML
- 将两个Json提要合并为一个,并按时间排序
- 为什么jQuery文件的函数中有两个参数,但只接收一个参数
- 使用javascript将两个文本框值相加到表中的另一个文本框中
- 当两个单独的单词被放在目标上时,使用Jquery获取一个值
- 为两个ID设置一个变量的正确语法
- webgl在一个正方形上操纵两个纹理
- 一个jsp中有两个操作URL
- javascript测试是否存在两个标志中的任何一个
- Jquery:当两个或多个条件为true时,选择一个元素
- 使用一个表达式将两个变量分配给相同的值
- react-让一个元素返回两个相邻的<tr>标签
- 同一事物的两个函数,一个崩溃,另一个不崩溃,为什么
- 检查来自不同数组的两个元素的一个属性是否相等
- 保存两个模型(属于第三个模型)和一个提交
- 一个具有两个图像按钮的表单在只能按下一个按钮的情况下发送两个按钮值
- 将两个express应用程序封装在一个应用程序中
- 一个Web应用程序上有两个Java脚本