これは、はい/いいえの種類の質問です。要素のすべての子を再帰的に無効にする
jqueryの要素のすべての子を絶対に無効にしようとしています。
は
$('#id_of_an_element').children().do(function(){
do_something;
});
を再帰的要素のすべての子を呼び出す呼び出すないか、それだけでdo_something
のすべての直接の子孫にいますか?
ヘルプは高く評価され、
ジョシュ
これは、はい/いいえの種類の質問です。要素のすべての子を再帰的に無効にする
jqueryの要素のすべての子を絶対に無効にしようとしています。
は
$('#id_of_an_element').children().do(function(){
do_something;
});
を再帰的要素のすべての子を呼び出す呼び出すないか、それだけでdo_something
のすべての直接の子孫にいますか?
ヘルプは高く評価され、
ジョシュ
DOM要素の集合を表し、jQueryオブジェクト、.children(考える) 方法は、私たちはの 直接の子を検索することができますこれらの要素 をDOMツリーに追加し、対応する 要素から新しい jQueryオブジェクトを構築します。 .find()および.children() メソッドは、 がDOMツリーを1つのレベルでしか移動しないという点を除いて、同様です。また、ほとんどのjQueryメソッドの のように、.children()は にはテキストノードを返しません。テキストとコメントを含む 子をすべて取得するには、ノード .contents()を使用します。
http://api.jquery.com/children/
あなたは、ネストの任意のレベルですべての子孫に基づいて行動したい場合は、この操作を行うことができます。
$('#id_of_an_element').find('*').attr('disabled', true);
または子孫セレクタを使用して:
$('#id_of_an_element *').attr('disabled', true);
あなたはできます
function disableChildren(obj) {
obj.children().each(function(i, val) {
disable(val);
disableChildren(val);
});
}
disableChildren($("#id"));
を参照してください。.each
.do
メソッドはありません。
あなたはすべての子孫に影響を与えるようにしたいので、あなたが
を「無効」と言うとき、あなたが望むすべての行うことを関数としてdisable
を実装する必要があります、ちょうどこの操作を行います。
$('#id_of_an_element *').each(function() {
// do something
});
しかし、私はあなたが何をしているのかを知りたいと思っています。
多くの要素タイプでは、disabled
プロパティは無意味です。あなたがやっていることがCSSの継承の恩恵を受けることができるかもしれません。
実際にdisabled
プロパティが必要な場合は、form
要素をターゲットにすることもできます。
$('#id_of_an_element :input').attr('disabled','disabled');
':input'セレクタについて+1してください。間違いなく、すべての子孫をループするよりも理にかなっています。 – karim79
@ karim79:ありがとう。何が最善であるかを言うのは難しいですが、私はOPが行っていることに対して適切な解決策は '*'を伴わないと確信しています。私は間違っている可能性があります。 – user113716
あなたは何をしたいですか?それぞれの子孫に影響を与える必要はないかもしれません。 – user113716