Javascript 如何创建影响带有前缀和后缀的id的jquery函数?

Javascript 如何创建影响带有前缀和后缀的id的jquery函数?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我需要每天像时间表一样记录。假设我有这个jQuery来计算或做一些事情 $('#report_time_hours').change(function() { $('[name=reporttime]').val(/* new value */); }); $('#report_time_minutes').keyup(function() { $('[name=reporttime]').val(/* new value */); }); $('#report_time_per

我需要每天像时间表一样记录。假设我有这个jQuery来计算或做一些事情

$('#report_time_hours').change(function() {
    $('[name=reporttime]').val(/* new value */);
});
$('#report_time_minutes').keyup(function() {
    $('[name=reporttime]').val(/* new value */);
});
$('#report_time_period').change(function() {
    $('[name=reporttime]').val(/* new value */);
});
这些函数被视为一天的一组函数

我有7天(周一到周日),在HTML部分,我应该通过添加前缀来重命名ID和名称,如
Mon\u reportname
Mon\u report\u time\u hours
Sun\u report\u time\u hours

如果我使用

$('[id$=_report_time_hours]')
这肯定会影响ID为该后缀的所有字段,而不考虑前缀(mon、tue等)


那么,如何使函数集只影响相似的前缀呢?

给出您的Id号,例如:

$('#report_time_hours1').change(function() {
    $('[name=reporttime]').val(/* new value */);
});
$('#report_time_minutes1').keyup(function() {
    $('[name=reporttime]').val(/* new value */);
});
$('#report_time_period1').change(function() {
    $('[name=reporttime]').val(/* new value */);
});
然后你可以把每一天都表示成一个数字1——星期天等等

那么您的代码应该如下所示:

for(i=1;i<=7 ; i++)
{
    $('#report_time_hours' + i).change(function() {
        $('[name=reporttime]').val(/* new value */);
    });
    $('#report_time_minutes1' + i).keyup(function() {
        $('[name=reporttime]').val(/* new value */);
    });
    $('#report_time_period1' + i).change(function() {
        $('[name=reporttime]').val(/* new value */);
    }); 
}

这也会起到作用

你能分享html样本吗?给所有这些元素也起一个类名怎么样?你的意思是像添加class=“Monday”?顺便说一句,为了清楚起见,我尽量避免每天制作7套函数。哦,是的,数字。为什么我没有想到这一点。但是,你能解释更多关于课堂部分的内容吗?无论如何,谢谢。是的,当你为你的小时数指定一个类时,例如,它们会做同样的事情,因此当你在jquery$('.className')中搜索时,这将为你提供一个包含所有具有此类名的dom元素的数组,然后你可以将更改附加到此数组,并且所有具有该类的dom元素都将获得此更改。因此,现在,我可以使用$('.className[I]'将其放入循环中,对吗?对不起,我理解这个有点慢。编辑:应该是$('.className:eq(i)'),对吗?好的,谢谢!
    $('classForHours').change(function() {
        $('[name=reporttime]').val(/* new value */);
    });
    $('classForMinutes').keyup(function() {
        $('[name=reporttime]').val(/* new value */);
    });
    $('classForPeriods' + i).change(function() {
        $('[name=reporttime]').val(/* new value */);
    });