2013-03-22 44 views
0

如果html無效並且具有多個具有相同「someid」的div元素,將返回jQuery("div#someid")。它會返回這些div的第一個嗎?或者是隨機的?有jQuery(div#id)行爲無效html

+7

爲什麼不自己嘗試一下? :O – Jashwant 2013-03-22 10:03:11

+1

[只讀文檔](http://api.jquery.com/id-selector/) - 「如果多個元素被分配了相同的ID,那麼使用該ID的查詢將僅選擇第一個匹配的元素DOM中的元素「。 – 2013-03-22 10:03:23

+2

ID應該是唯一的。給他們一個普通的班。 – lifetimes 2013-03-22 10:03:25

回答

6

選擇器會在不同的瀏覽器中給出不同的結果。

一些測試顯示這些結果:

Firefox 19: All elements 
IE 10: All elements 
IE 9: All elements 
IE 8: All elements 
IE 7: One element 
Chrome 25: All elements 

結果也可能與其他因素,如jQuery版本,頁面渲染模式和操作系統的不同而不同。你只是不能指望一致的結果與衝突的ID屬性。

+1

這實際上只涉及'div#someid'作爲CSS選擇器* *應該*返回無論您的標記是否符合,所有具有相同ID的元素。 IE7是這些列表中唯一不支持本機選擇器API的瀏覽器,因此IE7並未使用它來處理傳遞給jQuery的有效CSS選擇器,從結果中可以明顯看出jQuery將選擇器與規範區別開來。也就是說,最後一句話依然如此。只是不要使用重複的ID來節省自己不必要的麻煩。 – BoltClock 2013-03-22 10:13:42

+0

還要注意''div#someid''的行爲與省略'div'部分並僅使用'「#test」'不同 - 當後者只返回一個元素時。 – nnnnnn 2013-03-22 10:16:53

+0

謝謝您的詳細解答! – trinity 2013-03-22 10:21:24

0

相同的ID是無效的......所以你應該避免...和使用類...(但不會引發錯誤) 反正選擇將返回第一次出現的該分區具有相同的ID ..

2

最好知道的是嘗試一下,看看它在這個小動物http://tinker.io/cba17行動,所以答案是它會返回一個具有該ID的所有div的集合。儘管請避免這種情況,因爲它是無效的html,而是使用類。

還要注意有使用$('#someid')和$('div#someid')之間的差異:)

$('#someid'將返回第一個div使用該ID。

$('div#someid')將返回全部元素,如我在上面發佈的小提琴中所示。

+0

這個區別在於jQuery特殊情況的唯一ID選擇器這一事實。附加任何其他的ID將導致我在我對Guffa答案的評論中描述的行爲。 – BoltClock 2013-03-22 10:17:25

+0

謝謝你的演示,現在我知道如何測試並找到我對js未來查詢的答案.. – trinity 2013-03-22 10:19:55