我对 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/