2013-10-19 116 views
0

好了,兩個小時過去了,我不能修復這個...查找第一個元素層次,而不是在孩子

我:

<section id="sectionmain"> 
    Section1 
<article data-type="mainarticle" class="page-article" id="home-main"> 
    <section> 
     Section2 
    <nav data-parent="home-main" data-type="mainleft" class="page-left">Nav2</nav> 
    </section> 
    </article> 
<nav data-type="mainleft" class="page-left"> 
    Nav1 
</nav> 
</section> 

$("#sectionmain").first().find("[data-type='mainleft']")[0]; 

參見:http://jsfiddle.net/uYZmq/3/

我想查找#sectionmain目標的子項的第一個元素,該元素的data-type的值爲"mainleft"

正如你可以在小提琴中看到的,我有一個嵌套的<article>塊。其中也包含<nav>,與data-type相同,但我不想那個,我想要第一次出現。但不知何故,無論是Firefox和鉻,認爲第二個嵌套的是第一個,這是沒有意義的。有沒有辦法解決這個問題,並找到目標的真正第一個元素?

我試過.children(),其中.closest()和其他組合的整個負載,但沒有。

即使存在比此更多的嵌套,我也需要它。

我只想元素的ID中進行搜索,然後找到「其」<nav>,而不是它的兒童<nav>。所以基本上限制搜索到一個級別。

(我需要被命名爲數據類型相同(頁面左側),它是通過CSS樣式。我不希望任何其他類或變量添加的元素)

/編輯:我不希望[0]也是[1],我希望代碼可以在任何情況下都能正常工作,因爲如果在文章之前出現這種情況,它就會運行起來...

回答

2

first元素,它是#sectionmain目標的子級,具有「mainleft」的數據類型。

document.querySelector("#sectionmain>[data-type='mainleft']") 

或使用jQuery:

$("#sectionmain>[data-type='mainleft']")[0] 

>跡象將限制查詢到的直接孩子。

相關問題