我有一个像这样的锚标签:
<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");
这永远行不通。我尝试了 .html() 和 .append()。看起来它从来没有找到ID。 但如果我通过类名调用该事件,它就会起作用。
$(".big-link").text("some text");
有什么线索吗?预先感谢。
问题在于您构建 ID 值的方式。问题是
我删除了这些,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 的详细信息,请检查此答案:HTML 中 id 属性的有效值是什么?
编辑:如果您动态构建这些 ID,请考虑使用您自己的逻辑对其进行转义。
试试这个:http://jsfiddle.net/LPuTr/
a = 1;
b = 18;
c = "[email protected]";
aaa = a+'_'+b+'_'+c;
$('a[id="'+aaa+'"]').text("some text");
有关
ids
中 html 5
的更多信息,请参阅:http://mathiasbynens.be/notes/html5-id-class
您需要使用
@
转义点(.) 和 \\
字符。试试这个
$("#1_18_shazin\\@mycompany\\.com").text("some text");
您的 ID 中包含非法字符,并且 ID 不能以数字开头
问题是您在 ID 中使用
@
和 .
ID 和 NAME 令牌必须以字母 ([A-Za-z]) 开头,并且可以是 后跟任意数量的字母、数字 ([0-9])、连字符 (“-”)、 下划线(“_”)、冒号(“:”)和句点(“.”)。
@
对于 ID 来说是不合法的,而 .
和 :
是允许的,但应该避免使用它,因为:
例如,ID 可以标记为“a.b:c”并在 样式表为 #a.b:c 但同时也是元素的 id,它 可能意味着 id“a”、类“b”、伪选择器“c”
.