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

クラスを追加してから、次のようにします。

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

(または)

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

これらの文字列を配列内に格納できます。

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

その後:

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

これにより効率が上がることはありませんが、コードの繰り返しはなくなります。

于 2012-04-12T23:34:14.267 に答える
0

別のアプローチは、フィールドがグループ化されている場合、divなどの親オブジェクトを使用するか、フィールドセットを使用することです。

簡単で汚い例については、このフィドルを参照してください

于 2012-04-12T23:41:56.520 に答える