我在下面的樹結構的一些遞歸的HTML:jQuery的選擇只有孩子,直到特定類
div.item div.content input div.container div.item div.content input div.container div.item etc...
這裏有一個工作示例的jsfiddle:http://jsfiddle.net/HWHRZ/
我也有jQuery的引用一個對象每個.item
divs。
我想要做的是,對於任何特定的.item
,只選擇立即在下面的輸入,不包括任何更深的.container
或.item
元素中的輸入。
爲了使事情更加複雜,並不是每個.item
在輸入方面都具有相同的佈局。有時輸入可能在其他div
元素中,因此用簡單的.find('> .content :input')
選擇它們並不總是有效。
我發現了一個解決方案,但它對大樹效率不高,並且根本不優雅: $(':input', $item).not($('.container :input', $item)).toggleClass('changed');
($item
是我保留在對象中的引用)。這個解決方案的工作原理應該如此,但對於任何足夠大的樹結構而言效率太低,not()
將不得不處理大量的節點。
簡而言之:我需要選擇不在特定其他子節點內的特定子節點。
有沒有人知道這樣做的更有效的方法?
所以,你有沒有封閉的'div'標籤,大多數(如果不是全部的話)'輸入'標籤沒有自閉合斜線,沒有關閉的'select'元素,多個具有相同'id'的元素...... – 2012-04-17 13:35:44
你可以發佈你的HTML jsfiddle,真的有幫助 – Jayanga 2012-04-17 14:31:09
@DavidThomas。是。你幾乎認爲它只是爲了顯示樹結構而不是實際的HTML。我會設置一個jsfiddle來幫助你更好地理解。 – Martijn 2012-04-17 18:14:43