0

我有一个 jquery/javascript 函数,它创建一个数组以放置在表单的隐藏字段中。但是,这是一个嵌套表单,因此我需要多次调用此函数来填充所有子项的隐藏字段test_suite_run[test_runs_attributes][//id][packages_id]:这意味着我每次都需要使用不同的子 ID 运行此函数。

我已添加//id以指示许多函数调用之间的唯一区别。对于每个嵌套的子实例,我不知道如何在不手动复制多次并将 //id 替换为索引 0...n 的情况下复制此函数。这可以通过将参数传递给javascript函数来完成吗?

抱歉,如果这有点令人困惑,如果需要,我很乐意更详细地解释。

jQuery 函数

$(document).ready(function () {

    arr = new Array();

    $(document).on('change', 'select[id ^="s_package//id"]', function () {
        var arr = $('select[id ^="s_package//id"]').map(function () {
            return this.value
        })

        result = ""

        for (j = 0; j < arr.length - 1; j++) {
            result += (arr[j] + ", ");
        }

        result += (arr[arr.length - 1])


        $("input[name='test_suite_run[test_runs_attributes][//id][packages_id]']").val(result);

    });
});
4

1 回答 1

0

您可以传递要在函数中使用的 id 数组并对其进行迭代:

function somethingMeaningful(ids) {
    for (var i = 0, l = ids.length; i < l; i++) {
        var id = ids[i];
        // do something with this id
    }
}

$(function() {
    somethingMeaningful(['id1', 'id2', 'idn']);
});

也可以简化选择器并在运行时计算 id,具体取决于它们的实际格式:

$(document).on('change', 'select[id^="s_package"]', function () {
    var id = $(this).attr('id').slice('s_package'.length);
    // Do stuff with real id
});
于 2012-07-16T19:29:43.287 回答