2009-11-11 47 views
0

我有一個複雜的HTML表單,我正在使用jQ進行一些工作。並花了這個下午的最好的部分試圖瞭解一個問題,我可以追溯到jQuery未能找到現有控件的地步。 命令$("#FormView1_CopaBOM973row%18%_dkF").width();返回null。 首先我想在寬度()的錯誤 - 執行並嘗試$("#FormView1_CopaBOM973row%18%_dkF").attr("id"); - 哪些沒有返回任何東西,其長度爲0.爲什麼jQuery 1.3.2沒有通過ID找到現有的控件 - 我做錯了什麼?

我在Firefox 3.5.5中做這個,使用Firebug的DOM-Explorer來驗證事情就在那裏。最後,最終測試結果如下:$(document.getElementById("FormView1_CopaBOM973row%18%_dkF")).attr("id")返回了預期結果。

所以,我唯一的想法是任何「可疑」字符都需要轉義,但是文檔沒有提到下劃線或百分比爲「可疑」。那麼,我的錯在哪裏?

然後請。不要求更多的「代碼」,我不認爲這個問題將需要更多...

回答

2

馬修說,特殊字符不允許在ID屬性。這不是一個jQuery問題。 Here is the complete reference.

+0

感謝喬希 - 這表明我不應該在ID中使用%,我沒有意識到這一點。 – MBaas 2009-11-12 07:41:40

0

嘗試$(「#FormView1_CopaBOM973row%18%_dkF」)[0] .id;

0

'%'不是id屬性的有效字符,所以jQuery可能不會那樣。

0

轉義百分號似乎工作。

$("#FormView1_CopaBOM973row\\%18\\%_dkF") 
1

看起來this page底部的特殊字符列表不完整。試着逃避你百分號:

$("#FormView1_CopaBOM973row\\%18\\%_dkF") 
0

這些百分比%在CSS選擇器顯然是非法的(顯然因爲我無法在w3 spec找到他們,或者它必須是一個未揭露jQuery的缺陷),但不是在HTML attribues。逃離他們做的工作,但:

$("#FormView1_CopaBOM973row\\%18\\%_dkF").width(); 
0

我想是因爲你在你的ID有特殊字符的。

嘗試:

$("[id=FormView1_CopaBOM973row%18%_dkF]").width(); 
相關問題