1

我有一个这样的锚标签:

<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");

这永远不会奏效。我尝试了 .html()、.append()。看起来它永远找不到ID。但如果我按类名调用事件,它会起作用。

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

有什么线索吗?提前致谢。

4

6 回答 6

6

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

  1. 以数字开头
  2. 用于 @
  3. 用于 。

我删除了这些,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");

有关什么是有效 id 的详细信息,请查看此 SO 答案:HTML 中 id 属性的有效值是什么?

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

于 2013-01-18T06:55:53.520 回答
3

试试这个: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

于 2013-01-18T07:07:14.630 回答
2

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

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

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

于 2013-01-18T06:54:41.723 回答
1

您的 id 中有非法字符,id 也不能以数字开头

HTML 中 id 属性的有效值是什么?

于 2013-01-18T06:54:49.277 回答
0

在我看来,你必须放松期。和 alpha @ 然后它就可以工作了!

HTML 中 id 属性的有效值是什么?

我明白为什么 alpha,但我不知道期间:/

于 2013-01-18T07:00:57.890 回答
0

这是工作的JSfiddle

问题是您正在使用@并且.在您的 id 中

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。

@虽然 ID 是不合法的.并且:是允许的,但应该避免它,因为:

例如,一个 ID 可以标记为“ab:c”并在样式表中引用为#ab:c,但除了作为元素的 id 之外,它还可以表示 id “a”、class “b”、伪选择器“c”

.

于 2013-01-18T07:04:05.020 回答