2013-04-24 62 views
1

我試圖根據名稱檢索DOM元素。不幸的是,他們的名字裏面有花括號{}HTML名稱屬性中的大括號

jQuery(1.6.4)能夠在沒有問題的情況下檢索它們。但在這一點上,我試圖用getElementsByName()替換這些調用,但gEBN不匹配查詢字符串中具有大括號的任何內容。我試過反斜槓一次和兩次無濟於事。

有沒有辦法做到這一點,而不改變使用大括號的約定?

It also looks like它們不在名稱attr中允許的字符集合中。

更新:似乎適用於Chrome,但不適用於Windows。但真正奇怪的是,即使Safari for Windows也能很好地處理這些小提琴。

+0

這似乎是工作http://jsfiddle.net/sachinyadav/p7bNZ/ – Sachin 2013-04-24 21:28:03

+0

不知道你有什麼問題看到這個小提琴http://jsfiddle.net/x7Xe5/它的工作原理 – PSL 2013-04-24 21:28:09

+0

該死。看起來像這意味着需要更多的測試,如果它不是小提琴產生的 – 2013-04-24 21:29:26

回答

2

如果你讀selectors jQuery的文檔頁面中,你會看到這一點:!

使用任何元字符(如「#$%&「()* + ,. /:; < =>?@ [] ^`{|}〜)作爲名稱的文字部分,必須用兩個反斜槓進行轉義:\\例如,一個id =「foo.bar」的元素,可以使用選擇器$("#foo\\.bar")

+0

OP確實提到他試圖逃脫它。 – EmmyS 2013-04-24 21:42:42

+0

那麼,我想這個問題的演示是爲了:P – Mottie 2013-04-24 21:45:03

+0

問題是關於原生JS解決方案,明確避免採取(已工作)的jQuery路線。但是,是的。我......現在無法真正地複製它,除了一個極其特殊的情況外,現在有一個頁面在三層框架內。 – 2013-04-24 23:54:53

1

當你做明確的事情時,你應該期待「奇怪的」結果e標準允許。如果您選擇退出預訂,您自己就可以了。有些瀏覽器會工作,有些瀏覽器不會。當新版本發佈時,曾經工作的人會在沒有任何警告的情況下突然中斷。

所以這取決於你想要做的。如果你只是爲自己或小團隊打造一些東西,這可能沒問題。如果你想爲一般觀衆建立一些東西,最好堅持標準,不要使用不允許的字符。