2009-11-25 121 views
2

有沒有人試圖匹配一個ID與等號(=)在它,並處理?例如:jQuery匹配ID與'='

// DOM structure 
/*DOC += <span id='Test=Test' class='something'></span> */ 
var test = $('#Test=Test'); 

我試過上面的代碼。 jQuery不喜歡它,並返回undefined。但是,如果我匹配span的類,我實際上可以找到span(並隨後查詢id的值)。

如果我必須將id與'='相匹配,有沒有辦法做到這一點?

謝謝。

+1

試試逃脫它? '(「#Test \\ = Test」);' – 2009-11-25 05:38:19

回答

7

那麼,首先我想注意的是,等號不是ID attribute的有效字符,它仍然可以使用,但在不同瀏覽器之間可能會出現意想不到的行爲。

ID和名稱標記必須以字母開頭([A-ZA-Z])和之後可以是任何數量的字母,數字([0-9]),連字符( 「 - 」 ),下劃線(「_」),冒號(「:」)和句點(「。」)。

關於jQuery的,在選擇的=字符必須用雙反斜線轉義:

$('#Test\\=Test'); 

更多信息:

的完整的人物名單編輯要逃脫:#;&,.+*~':"!^$[]()=>|/

+0

正如你所說的,等號在ID屬性中是無效的,那你爲什麼說它仍然可以被使用? – 2009-11-25 09:15:57

+0

因爲你可以。但不應該。 您可以使用它,風險自負。 – NilColor 2009-11-25 09:54:50

+0

如果您使用帶有等號的ID,那麼您的文檔將不會是有效的HTML,這意味着所有投注都關閉,以至於用戶代理是否會渲染它。即使它(所有主流瀏覽器都會這樣做),所有與ID相關的行爲(例如CSS選擇器,document.getElementById,URL散列)都會有未定義的行爲(在這裏我會打賭瀏覽器行爲會有所變化)。爲什麼還要考慮冒這個險呢? – 2009-11-25 14:00:15