2016-01-04 24 views
-3

我想匹配類似jQuery的優化.find()對。孩子()的嵌套元素 - 錨查詢開始直接孩子

<a> 
    <b> 
     <c> 
      <d> 
    <b> 
     <c> 
      <d> 
</a> 

$("a").find("d") 

這我想通過指定完整路徑來優化,如

$("a").find("b > c > d") 

但是,仍然必須遍歷整個樹。 我想告訴jQuery <b>是正確的<a>。 所以我試過

$("a").children("b > c > d") 

這是行不通的。 的解決方案似乎是

$("a").children("b").children("c").children("d") 

是否存在的.find()/.children()一些變種如我所料爲.children()這將表現? 或者查詢字符串中有一些「錨點」,表示查詢中的第一個元素是第一級子元素?

+3

你試過'$('a> b')',或'$('a> b> c> d')'?目前還不清楚你準備瞄準哪個元素。 –

+2

沒有理由這樣做,jQuery通常會找出最有效的路線,如果您真的想要更快的速度,那麼您應該使用純JS。 – adeneo

+0

還應該注意的是,jQuery從右到左讀取字符串選擇器,而在現代瀏覽器中,可以由'querySelector'解析的選擇器只傳遞給內置方法。 – adeneo

回答

1

我發現.find()接受

$(this).find(" > a > b > c > d")` 

假設這可能是內部做我想要的,因爲由此產生的查詢持續時間較短。

+0

這就是你通常不會[想要這樣做](http://stackoverflow.com/questions/8406642/what-is-the-new-proper-way-to-use-a-child-selector-與-A-上下文節點在-jquery的) – adeneo