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

How to create a jquery function that affect id with prefix and suffix?

我需要像时间表一样记录每一天。假设我有这个 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_reportnamemon_report_time_hourssun_report_time_hours 等...

如果我用

$('[id$=_report_time_hours]')

这肯定会影响 ID 为该后缀的所有字段,无论前缀如何(mon、tue 等)

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

例如提供您的身份证号码:

$('#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 */);
    }); 
}

这应该可以解决问题。

虽然我会为您的所有数据选择 class,但它应该更简单:

    $('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 */);
    }); 

这也可以解决问题