2011-11-14 10 views
8

私は現時点では複雑な形で作業しています。すべての入力、ラベルを選択し、この中のetc.を選択してください - 各ループ

ただ、不思議、これを行うに任意のより良い方法があります:

$('.selector').each(function(){ 

    $("input", this).prop('disabled', true); 
    $("select", this).prop('disabled', true); 
    $("label", this).prop('disabled', true); 
    $("textarea", this).prop('disabled', true); 

}); 

は、私は(現在は.selectorループスルー)this内のすべての入力を選択します。 これは正しく行っていますか?あなたがやっている唯一のことは、それらの要素にそのプロパティを設定している場合

$('.selector').each(function() { 
    $('input, select, label, textarea', this).prop('disabled', true); 
}); 

:大丈夫です、しかし、あなたが他のセレクタあなたがグループに同じようにカンマを使用することができるはず、それを簡単にするために

+1

はい、技術的には。下の@ BoltClockの答えはこれを行う良い方法です。 – rossipedia

答えて

16

ループが実際には必要ありません。.each()あなたは安全にそれを落として、このワンライナーに減らすことができます:

$('input, select, label, textarea', '.selector').prop('disabled', true); 
+0

'$("セレクタ入力、。セレクタ選択、。セレクタラベル、。セレクタテキストエリア ")。prop( 'disabled'、true); –

+0

@Brian M. Hunt:それはすべきです。また、 '$( '。selector')。find( 'input、select、label、textarea')prop( 'disabled'、true);' – BoltClock

+0

Neat。私はそれらの間にパフォーマンスの違いがあるのだろうかと思います。 –