0

我有一些这样的 HTML:

<input type="radio" class="MyRadio" name="TheName">
<label for="TheLabel">the text</label>

如何更改标签的文本?

试过了

$('#TheLabel').text('My New Text');

它不起作用。有什么办法呢?

谢谢。

4

5 回答 5

2

你有一些事情在这里扭转。“for”不标识标签,它标识您正在标记的控件。您需要正确使用“for”,并且需要给它一个 ID:

<label for="TheName" id="TheLabel">The Label Text</label>

然后:

$('#TheLabel').text('My New Text');

将工作。

于 2012-04-04T14:23:51.913 回答
1

使用 id 来引用标签,这将允许更简单的 jquery 操作

然后,您可以使用 jquery .html()随心所欲地更改标签的内部,或者如果您继续只需要文本操作,则.text()函数将产生相同的结果。

这是一个 jsfiddle,显示了您想要的结果的示例:here

的HTML:

<input type="radio" class="MyRadio" name="TheName">
<label id="mylabel" for="TheLabel">the text</label>​

jQuery:

$('#mylabel').text('My New Text');​

或者

$('#mylabel').html('My New Text');​
于 2012-04-04T14:25:09.647 回答
0

更新:查看@Mark 的答案......你的代码是错误的。 “for”属性应该指向输入。 我已经清理了解决此问题的答案。

匹配属性同样的东西,而不是文本框的#id(标签没有id)。

<input type="radio" class="MyRadio" name="TheName" id="TheName">
<label for="TheName">the text</label>​​​​​​​​​​​

$('label[for="TheName"]').text('This is my new text');​

查看它在您的 HTML 上运行的 jsFiddle。

于 2012-04-04T14:23:06.013 回答
0

您使用了错误的选择器(在这种情况下,将TheLabel其视为 ID),您可以使用以下内容:

$('label[for=TheLabel]').text('My New Text');​​​

您还可以更改forforid以使您已经拥有的代码起作用。

于 2012-04-04T14:23:46.763 回答
0

'for' 属性是指输入,而不是标签。为了正确识别标签,最好的做法是给它一个 ID。这是一个养成的好习惯,因为它有助于快速查找:

HTML:

<input type="radio" class="MyRadio" name="TheName">
<label for="TheName" id="TheLabel">the text</label>

jQuery 选择器:

$( '#TheLabel' )

但是,如果您想通过 for 属性获取元素,使用原始 HTML,您可以这样做:

$( 'label[for=TheLabel]' )
于 2012-04-04T14:49:22.103 回答