0

(JQuery 新手)我有一个列表,其中包含大约 20 个在页面加载时需要禁用的元素。元素列表包含所有 HTML <input> 元素,每个元素都有不同的 ID,遵循一般命名约定。

        $('#rmX\\.val').prop("disabled",true);
        $('#rmX\\.unit').prop("disabled",true);
        $('#rmX\\.ba').prop("disabled",true);
        $('#rmX\\.sms\\.opt').prop("disabled",true);
        $('#rmX\\.sms\\.val').prop("disabled",true);
        $('#rmX\\.sms\\.car').prop("disabled",true);
        $('#rmX\\.em\\.opt').prop("disabled",true);
        $('#rmX\\.em\\.val').prop("disabled",true);
        $('#rmX\\.off\\.opt1').prop("disabled",true);
        $('#rmX\\.off\\.opt2').prop("disabled",true);
        $('#rmX\\.off\\.val').prop("disabled",true);
        $('#rmZ\\.end\\.vald').prop("disabled",true);
        $('#rmZ\\.end\\.valw').prop("disabled",true);
        $('#rmZ\\.end\\.valm').prop("disabled",true);
        $('#rmZ\\.end\\.valy').prop("disabled",true);
        $('#rmZ\\.date').prop("disabled",true);
        $('#rmZ\\.time').prop("disabled",true);
        $('#rmZ\\.ap').prop("disabled",true);
        $('#evt\\.sec\\.opt2').prop("disabled",true);
        $('#evt\\.sec\\.val21').prop("disabled",true);
        $('#evt\\.sec\\.val22').prop("disabled",true);

有没有办法让这个列表更有效率,或者这就是你要做的方式。

(PS。很惊讶没有可用的“最佳实践”标签。)

编辑:将“隐藏”从原始问题更改为“禁用”,如我的代码中所示。

4

4 回答 4

5

为什么不给你想要禁用canBeDisabled的所有元素添加一个类?#evt

$("#evt .canBeDisabled").prop("disabled", true);
于 2012-04-12T23:28:10.590 回答
0

另一种方法是,如果将字段分组在一起,您可以使用父对象,例如 div 或更好的字段集。

有关快速而肮脏的示例,请参见此小提琴

于 2012-04-12T23:41:56.520 回答
0

您可以将这些字符串存储在数组中:

var arr = [ '#rmX\\.val', '#rmX\\.unit', ... ];

接着:

$.each( arr, function ( i, val ) {
    $( val ).prop( 'disabled', true );
}); 

这不会提高效率,但它消除了代码重复。

于 2012-04-12T23:34:14.267 回答
0

添加一个类,然后这样做:

$('.hideClass').hide();

(或者)

$("#rmX\\.val, #rmX\\.unit, #rmX\\.ba, #rmX\\.ba").hide();
于 2012-04-12T23:30:58.387 回答