2014-03-04 74 views
-1

我在ajax成功動態生成表並給每個表一個id。此ID等於產品型號的編號。jquery中包含空間的ID問題?

但在許多情況下,產品型號包含空格,因爲它不生成的ID正確一樣,如果模型是「MU-1 SLD G」然後動態表看起來像這樣 <table id="MU-1" g="" sld="">

那麼如何處理這種情況?

+2

而產生動態ID可以用_ – gulshanm01

+2

沒有足夠的上下文信息代替空間......但最好的解決辦法是隻需更換與選擇的符號的空間。 – Christoph

+0

代碼在哪裏?添加代碼,因爲它似乎對我而言是偏離的。投票結束。 – Jai

回答

2

ID中不能有空格。

生成表格內容時,請使用替換功能,將空格更改爲「 - 」。從服務器接收的數據中引用表格行時,請使用相同的功能生成要查找的有效標識號。

執行此功能的一個簡單的例子:

function replaceAllSpacesWithLines(string) { 
    return string.replace(/ /g, '-'); 
} 

所以基本上產生所述內容時,遍歷所有數據從所述AJAX請求到來 - 假定這是用某種陣列的JSON響應元素 - 並通過使用此函數爲ID創建表格行。爲了便於參考,還可以爲行選擇一個數據屬性,以便保留原始ID的值以防萬一需要。

對於關鍵「有些KEY 1」,你可以結了一個錶行:

<tr data-id='SOME KEY 1' id='SOME-KEY-1'> ... data ... </tr> 

這樣,在元素上點擊時,您可以檢查數據-ID的真實身份,並且從邏輯數據中選擇行時,可以重新生成id,或者簡單地查詢具有特定data-id的行的dom。

我希望這有助於:)

1

如果您無法爲某些元素編寫CSS選擇器,則可以通過替代方法獲取它們,並直接將元素傳遞給jQuery。例如,對於包含空格的ID,用getElementById方法:

http://jsfiddle.net/cvWt5/

<div id="foo bar">Hello</div> 

而且在JS:

var element = document.getElementById("foo bar"); 
jQuery(element).css({ color: "red" }); 

然而,因爲在標識空間是not valid HTML5,你應該避免在ID中使用空格。更好的解決方案是將空格字符更改爲非空格字符,如下劃線_,或者使用camelCase標識符代替。

+0

,一個ID不能包含空格字符。所以你應該在任何情況下都不要使用它們! http://www.w3.org/TR/2011/WD-html5-20110525/elements。html#the-id-attribute – Christoph

+0

是的,這幾乎是我發佈的相同鏈接。 – Douglas

+0

你爲什麼然後寫這樣的答案?它鼓勵初學者做廢話......當我寫評論時,你的編輯還沒有出現(我知道,在編輯之後幾分鐘我寫了它,但是在我寫評論之前我沒有刷新答案)。 – Christoph