Jquery .text()不起作用

时间:2013-01-18 06:45:30

标签: javascript jquery html

我有这样的锚标记:

<a id="1_18_shazin@mycompany.com" class="big-link" href="">4</a>

现在我尝试用以下代码替换文本

a = 1;
b = 18;
c = "shazin@mycompany.com";
var tempId = "#"+a+"_"+b+"_"+c;
$(tempId).text("some text");

Thiis永远不会奏效。我试过.html(),. append()。看起来它永远不会找到ID。 但是如果我按类名调用事件,它就有效。

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

有任何线索吗?提前谢谢。

6 个答案:

答案 0 :(得分:6)

问题在于您构建ID值的方式。问题是

  1. 以数字开头
  2. 使用@
  3. 使用。
  4. 我删除了那些,jquery text()对我来说很好。检查这个小提琴: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");
    

    有关什么是有效身份证明的详细信息,请查看此SO答案:What are valid values for the id attribute in HTML?

    编辑:如果您要动态构建这些ID,请考虑使用您自己的逻辑来转义它们。

答案 1 :(得分:2)

您需要使用@转义点(。)和\\字符。试试这个

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

试试这个:http://jsfiddle.net/HLtz9/10/

答案 2 :(得分:2)

试试这个:http://jsfiddle.net/LPuTr/

a = 1;
b = 18;
c = "shazin@mycompany.com";
aaa = a+'_'+b+'_'+c;

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

有关idshtml 5的更多信息,请参阅:http://mathiasbynens.be/notes/html5-id-class

答案 3 :(得分:1)

您的ID中包含非法字符,ID也不能以数字开头

What are valid values for the id attribute in HTML?

答案 4 :(得分:0)

在我看来,你必须失去一段时间。和alpha @然后它有效!

What are valid values for the id attribute in HTML?

我理解为什么是alpha,但我对句号没有任何线索:/

答案 5 :(得分:0)

Here is working JSfiddle

问题是您在ID中使用@.

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

@.被允许的情况下,

:对于ID不合法,但是应该避免它,因为:

  

例如,ID可以标记为“a.b:c”并在中引用   样式表为#a.b:c但是作为元素的id,它   可能意味着id“a”,类“b”,伪选择器“c”