2011-04-04 34 views
0

dojo.query("#foo #bar")在FF,Safari,Chrome和IE8中按預期工作,在IE7中返回一個空列表。dojo查詢不能在IE7上運行,但是在IE8和其他瀏覽器上運行?

我實際上是在尋找一個與id = bar的div在id = foo的另一個div內。
我在我的查詢中錯過了什麼,或者這是IE7中的一個已知問題?

感謝 傑夫

+0

你的「id」值在頁面上是完全獨一無二的嗎? (他們應該是)如果他們不是,那會引發怪異。 – Pointy 2011-04-04 14:05:53

+1

這有合法用途。這可以用來檢測#bar是否包含在HTML中的#foo中。無論如何,如果id是唯一的,dojo.query不應該提供不同的答案。 – 2011-04-05 08:30:41

+0

這是一個很好的觀點,但是如果ID是/不是/唯一的(在發送給瀏覽器的HTML中),getElementById(並且我會假設dojo.byId)將只考慮具有給定ID的第一個節點。如果你想檢查id foo中是否存在id bar,你最好使用'dojo.query('#bar',dojo.byId('foo'));'假設一個相當大的DOM – mrtom 2011-04-05 13:49:26

回答

1

因爲ID是唯一的,你不應該曾經在一次查詢兩項。因此,無論是修改查詢還是使用單個ID,或者如果您需要具有相同「ID」的多個元素,請使用一個類。

對於第二個選項,然後將您的查詢更改爲dojo.query('.bar', dojo.byId('foo')),該查詢返回帶有類'bar'的元素,它們是ID爲'foo'的元素的子元素。

相關問題