javascript - 使用常量调用函数时如何避免 DRY 问题?

标签 javascript jquery function parameters constants

我对 Javascript 还是个新手。我需要附加一个函数来处理我的某些 HTML 元素上的事件。

我正在做以下事情:

$('#iinp0').keyup(function(){keyReleased('iinp0');});
$('#iinp1').keyup(function(){keyReleased('iinp1');});
$('#iinp2').keyup(function(){keyReleased('iinp2');});
$('#iinp3').keyup(function(){keyReleased('iinp3');});
$('#iinp4').keyup(function(){keyReleased('iinp4');});
$('#iinp5').keyup(function(){keyReleased('iinp5');});
$('#iinp6').keyup(function(){keyReleased('iinp6');});
$('#iinp7').keyup(function(){keyReleased('iinp7');});

我希望我可以通过以下方式应用不要重复自己 (DRY) 原则:

for (i=0;i<=7;i++) {

    var tmp = 'iinp' + i;
    $('#'+tmp).keyup(function(){keyReleased(tmp);});

}

keyReleased() 未使用正确的值调用。

这个问题有解决办法吗?我的意思是有没有一种简单的方法来附加我的具有常量参数的函数?

最佳答案

为什么不简单地这样:

$('#iinp0, #iinp1, #iinp2, #iinp3, #iinp4, #iinp5, #iinp6, #iinp7').keyup(function()
{
    keyReleased(this.id);
});

您甚至可以用属性选择器替换那个长选择器:

$('[id^=iinp]').keyup(function()
{
    keyReleased(this.id);
});

这将选择 id 以 iinp 开头的任何元素。

注意:这个选择器比纯 ID 选择器慢一点——但更容易阅读和维护(如果你能用标签选择器限定它,它会快一点).

关于javascript - 使用常量调用函数时如何避免 DRY 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8780879/

相关文章:

javascript/jquery 传递变量

c++ - 使用用户输入创建对象

c++ - 用 C++ 构建一个 23 的牙签游戏

javascript - Dropzone 删除除第一个文件之外的所有文件

javascript - 在 Google map 中动态更改信息窗口的内容

javascript - 如何在 Angular 中执行带有请求 header 的 ajax post

C函数输入字符串并计算

javascript - 在 Dynamics CRM 中,如何更新创建日期?

Javascript整数到字符串输出与预期值不匹配

javascript - 调用赋值给变量的 JS 函数