2012-10-02 56 views
0

我有以下HTML結構:的jQuery選擇的第一個孩子三個層次的深度

<div class="s1> 
<div class="s2"> 
    <span class="span1"> 
    <span>text</span> 
    </span> 
</div> 
</div> 

目前我選擇最嵌套跨度有以下選擇:

$(".s1").find(">:first-child").find(">first:child").find(">:first-child") 

有沒有更有效的方法選擇內部跨度?

編輯:div類與s1已被緩存,所以我不能使用$(「選擇器」)。

+0

你不能給這個跨班的? – Ian

+0

$(「。s1」)。children(「:first」)。children(「:first」)。children(「:first」)但它沒有太多更好的 –

回答

2

您可以通過SPAN1類訪問它,

$('.span1 span') 
+0

謝謝你指引我朝着正確的方向。最後我使用了s1.find(「。span1 span」); –

1

有幾個選項,這樣的事情應該工作:

.s1 .s2 .span1 span:first-child 

我不知道你是如何具體需要選擇是。

0

給它一個類或ID,然後嘗試訪問它

<span id="sp1" class="sp1">text</span> 

$('#sp1') or $('.sp1') 

//或

$('.span1 > span') 
-1
$('div.s1 > div:first-child > span:first-child > span:first-child') 

你還需要什麼比這更具體的?

0

如果你談論的是效率最快的是定義一個ID爲跨度:

<span id="spanX">text</span> 
$('#spanX') 

因爲這個選擇直接映射到跨瀏覽器的getElementById

如果你不能碰的HTML某種原因最快的方法是:

$('.span1 span:first') 
+1

該解決方案的jsPerf表示其比解決方案效率低73%。 –

+0

是的,我錯誤的跨度:首先,感謝您指出。測試:http://jsperf.com/span-vs-span-first – MazarD