2013-01-18 42 views
0

我有一個錨標記是這樣的:jQuery的的.text()不工作

<a id="[email protected]" class="big-link" href="">4</a> 

現在我想用下面的代碼

a = 1; 
b = 18; 
c = "[email protected]"; 
var tempId = "#"+a+"_"+b+"_"+c; 
$(tempId).text("some text"); 

Thiis永遠不會奏效替換的文本。我試過.html(),.append()。看起來它從來沒有找到ID。 但是,如果我按類名稱調用事件,它會起作用。

$(".big-link").text("some text"); 

任何線索?提前致謝。

+1

你能爲我們做http://jsfiddle.net? –

+1

我看到的第一個問題是在ID中使用「@」,並以數字開頭。請參閱此SO回答詳情:http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in-html – ryadavilli

+0

該片段在jsfiddle中正常工作。 – shazinltc

回答

5

問題是與你的方式開始構建您的ID值。問題是

  1. 以數字
  2. 使用的起始@
  3. 使用。

我刪除了那些和jQuery文本()對我來說工作正常。檢查此琴:http://jsfiddle.net/kDnmu/

HTML

<a id="A_1_18_shazin_mycompany-com" class="big-link" href="">4</a> 

jQuery的

a = 1; 
b = 18; 
c = "shazin_mycompany-com"; 
var tempId = "#A_"+a+"_"+b+"_"+c; 
$(tempId).text("some text"); 

要詳細瞭解什麼是有效的身份證檢查這個蘇答案:What are valid values for the id attribute in HTML?

編輯:如果你是動態構建這些ID,請考慮用自己的某些邏輯轉義它們。

+0

謝謝:)經驗教訓! – shazinltc

+0

@shazinltc它沒有必要,你可以看到我的答案。 – Jai

2

您需要轉義點(。)和@字符\\。試試這個

$("#1_18_shazin\\@mycompany\\.com").text("some text"); 

試試這個:http://jsfiddle.net/HLtz9/10/

+0

爲了我的好奇心,\ \如何避免使用ID有效性要求? – ryadavilli

+0

嗨@ryadavilli,我真的不知道細節,剛剛得到一個類似的問題,並通過谷歌搜索瞭解到這一點。 – tusar

+1

在這裏找到了一些解釋:http://api.jquery.com/category/selectors/和一些細節在這裏:http://mathiasbynens.be/notes/css-escapes – ryadavilli

0

Here is working JSfiddle

問題是您正在使用@.您的帳號

ID和名稱標記必須以字母([A-Za-z])開頭,並且可以是 ,後面跟着任意數量的let數字([0-9]),連字符(「 - 」), 下劃線(「_」),冒號(「:」)和句點(「。」)。

例如,一個ID可以被標記爲「AB:C」,並在 風格引用

@.:是允許的,但應避免,因爲是不合法的ID片作爲#ab:C,但以及作爲該元素的ID,它 可能意味着ID 「A」, 「b」 類,僞選擇 「c」 的

。在html 5http://jsfiddle.net/LPuTr/

a = 1; 
b = 18; 
c = "[email protected]"; 
aaa = a+'_'+b+'_'+c; 

$('a[id="'+aaa+'"]').text("some text"); 

ids更多信息請參閱本:

2
+0

很好的例子,這種方法簡單得多,但是你需要一個支持html5的瀏覽器。 –

+0

@ Floradu88雖然你可以在'ie7'或'ie8'上測試它,但它並不是必須的。 – Jai

+1

你是對的,這需要是我從這個 –