次のツリー構造に再帰的なHTMLがあります。
div.item div.content 入力 div.container div.item div.content 入力 div.container div.item 等...
これが実際の例を含むjsfiddleです:http://jsfiddle.net/HWHRZ/
また、各divへのjQuery参照を持つオブジェクトもあります.item
。
私がやりたいのは、特定の場合、より深い要素や要素.item
の入力を除いて、すぐ下の入力のみを選択することです。.container
.item
物事をより複雑にするために、すべて.item
が入力に関して同じレイアウトを持っているわけではありません。入力が他のdiv
要素にある場合もあるため、単純なものでそれらを選択すると、.find('> .content :input')
常に機能するとは限りません。
私は解決策を見つけましたが、大きな木では非効率的で、まったくエレガントではありません:(
$(':input', $item).not($('.container :input', $item)).toggleClass('changed');
これ$item
は私がオブジェクトに保持している参照です)。このソリューションは正常に機能しますが、十分に大きなツリー構造には非効率的でありnot()
、多くのノードを処理する必要があります。
つまり、特定の他の子ノード内にない特定の子ノードを選択する必要があります。
誰かがこれを行うためのより効率的な方法を知っていますか?