2011-12-22 48 views
3

我正在爲使用所見即所得構建的頁面編寫javascript。不,我目前無法進入並更改ID或真正調整DOM。爲什麼jQuery選擇器會返回null?

這是我試圖選擇的DOM元素(這是由所見即所得產生的)。

<td nowrap="true" align="left" id="vW2070;" name="vW2070;" style="padding-left: 2pt; padding-right: 2pt; border-left: 1pt solid black; cursor: auto; background-color: rgb(164, 194, 64); color: rgb(0, 0, 0);" class=" nAll selected" selected="1" sn="itemList">TOP 5</td> 

當前在我的JavaScript的ID我想要得到的是#vW2070;。出於某種原因document.getElementById("vW2070;")完美返回,但$("#vW2070;")返回null。爲什麼是這樣?我需要使用jQuery選擇器。

該功能在$(document).ready上運行。

我從來沒有見過這樣的事情。

謝謝大家。

編輯:沒有分號它也沒有拿起它。由於所見即所得,分號實際上在元素的ID屬性中。

+1

爲什麼使用分號?他們真的是選擇者的一部分嗎? – 2011-12-22 14:29:29

+0

jquery不會忽略';',所以'$(「#vW2070;」)''應該是'$(「#vW2070」)' – 2011-12-22 14:29:57

+0

ID是否真的有一個分號? – isNaN1247 2011-12-22 14:30:27

回答

7

您可以逃脫這樣的分號:

$("#vW2070\\;") //Use one backslash to escape the semicolon for the Sizzle parser and the other to escape the first backslash for the javascript parser, so two in total 

$(document.getElementById("#vW2070;")).jquerystuff(...); 

的jsfiddle:http://jsfiddle.net/HTyQC/

此外,a relevant link的ID屬性如何多才多藝的。

+0

+1。 – 2011-12-22 14:37:43

+0

雖然你的解決方案*應該*工作,出於某種原因,當我逃脫它,它仍然失敗。我已經意識到document.getElementById(「vW2070;」)也返回null。我不知道爲什麼。這是瘋狂的......我要把這個答案標記爲正確的。當我弄清楚我的代碼和我瘋狂的情況有什麼問題時,我會在這裏發佈解決方案。 – 2011-12-22 14:46:42

+0

@JesseAtkinson只是使用所見即所得的衆多危險之一... – Dennis 2011-12-22 14:50:39

1

嘗試刪除;你不應該需要它

$("#vW2070") 
+0

OP無法更改ID。 – motoxer4533 2011-12-22 14:35:21

1

嘗試刪除分號$("#vW2070;")$("#vW2070")

你是不是收到錯誤消息?在Chrome中,你應該得到Uncaught Error: Syntax error, unrecognized expression: ;

1

如果你的元素的id確實有一個分號的它,然後 technically its invalid

編輯:HTML5 spec似乎不排除除空格以外的任何字符。

你可以只ESPACE分號與雙反斜線#vW2070\\;

否則,只是從你選擇的代碼刪除分號。

0

這是jQuery的bug或我們可以說當前的jquery版本的限制。它不會允許';' ID。

相關問題