jQuery .text() 不更改元素文本

问题描述 投票:0回答:6

我有一个像这样的锚标签:

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

有什么线索吗?预先感谢。

javascript jquery html
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 的详细信息,请检查此答案:HTML 中 id 属性的有效值是什么?

编辑:如果您动态构建这些 ID,请考虑使用您自己的逻辑对其进行转义。


3
投票

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


2
投票

您需要使用

@
转义点(.) 和
\\
字符。试试这个

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

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


1
投票

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

HTML 中 id 属性的有效值是多少?


0
投票

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

HTML 中 id 属性的有效值是多少?

我明白为什么是 alpha,但我不知道 period :/


0
投票

这里正在工作 JSfiddle

问题是您在 ID 中使用

@
.

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

@
对于 ID 来说是不合法的,而
.
:
是允许的,但应该避免使用它,因为:

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

.

© www.soinside.com 2019 - 2024. All rights reserved.