2010-07-06 142 views
1

我有一個大致有這個結構的大HTML文檔:jQuery選擇幫助

<div id="a"> 
    <!-- more html code here --> 
    <span id="title">...</span> 
    <!-- more html code here --> 
</div> 
<div id="b"> 
    <!-- more html code here --> 
    <span id="title">...</span> 
    <!-- more html code here --> 
</div> 
... 
... 
<div id="z"> 
    <!-- more html code here --> 
    <span id="title">...</span> 
    <!-- more html code here --> 
</div>  

注意外的DIV的ID爲這是唯一的( 「A」, 「B」,...,「Z 「),但內部SPAN具有非唯一的標識(」標題「)。

要選擇一個SPAN這是DIV「Q」裏,比如,我嘗試使用這樣的:

$("#q").find("#title"); 

這跑得快於FF和Chrome,但find()方法需要較長的時間來在IE8(和IE7)中執行。有沒有其他方法可以做到這一點?

請讓我知道,如果我可以提供任何進一步的信息。

+8

對我的作品* 「但內部SPAN具有非唯一的ID」*這是無效的,ID必須是唯一的。你應該使用類來代替。 ' ...' – user113716 2010-07-06 21:58:47

回答

8

因爲ID必須是唯一的,所以您應該將標記更改爲使用<span>元素的類替代ID。

<div id="a"> 
    <!-- more html code here --> 
    <span class="title">...</span> 
    <!-- more html code here --> 
</div> 
<div id="b"> 
    <!-- more html code here --> 
    <span class="title">...</span> 
    <!-- more html code here --> 
</div> 
... 
... 
<div id="z"> 
    <!-- more html code here --> 
    <span class="title">...</span> 
    <!-- more html code here --> 
</div> 

則:

$("#q").find(".title"); 

如果我沒有記錯,即特別是與非唯一ID的麻煩。將您的代碼更改爲以上版本可能會爲您帶來訣竅。

+0

你說得對。希望是那樣。但我無法控制這些ID。無論如何,感謝您的回答......看起來像我在這裏被沖走。 – 2010-07-06 22:07:06

+1

如果您只有一個跨度,您可以通過$(「#q」)來完成。find(「span」) – Marko 2010-07-06 22:12:06

+0

可以有多個跨度。但根據你的建議,我可以試試$(「#q」)。find(「span#title」)。也許這會有所幫助。 – 2010-07-06 22:16:22

2

正如其他人所說,代碼無效。但是,如果你堅持使用它,你應該能夠做到這一點,以正確選擇它。如果沒有運行測試,我不知道怎麼高性能,這將是在你嘗試另一種方法:

$("#b span[id=title]"); 
+0

這也會起作用 – Marko 2010-07-06 22:31:51

+0

+1 - 我剛剛在我的建議下留下了一條評論(刪除),提示同樣的事情,然後向下滾動,看到你用長鏡頭擊敗了我! :O) – user113716 2010-07-06 22:39:12

0

如何像

$("#q").find("span").each(function() { 
    if($(this).attr("id") == "title") { 
     $(this).css('color','red'); 
    } 
}); 

這在IE/FF