次のツリー構造に再帰的な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()、多くのノードを処理する必要があります。
つまり、特定の他の子ノード内にない特定の子ノードを選択する必要があります。
誰かがこれを行うためのより効率的な方法を知っていますか?