[英]How do I make this JQuery code more efficient
(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。感到驚訝的是,沒有可用的“最佳做法”標簽。)
編輯:從我的代碼中顯示的“隱藏”從原始問題更改為“禁用”。
為什么不加個班canBeDisabled
所有在你的元素#evt
要禁用?
$("#evt .canBeDisabled").prop("disabled", true);
添加一個類,然后執行以下操作:
$('.hideClass').hide();
(要么)
$("#rmX\\.val, #rmX\\.unit, #rmX\\.ba, #rmX\\.ba").hide();
您可以將這些字符串存儲在數組中:
var arr = [ '#rmX\\.val', '#rmX\\.unit', ... ];
接着:
$.each( arr, function ( i, val ) {
$( val ).prop( 'disabled', true );
});
這不會使其效率更高,但是可以消除代碼重復。
另一種方法是,如果將字段分組在一起,則可以使用父對象,例如div或更好的字段集。
有關快速而骯臟的示例,請參見此小提琴
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.