jquery访问输入标签

时间:2012-04-04 14:20:29

标签: jquery

我有一些像这样的HTML:

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

如何更改标签的文字?

尝试

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

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

感谢。

5 个答案:

答案 0 :(得分:2)

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

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

然后:

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

会奏效。

答案 1 :(得分: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');​

OR

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

答案 2 :(得分: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');​

Check out a jsFiddle of it working in action on your HTML.

答案 3 :(得分:0)

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

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

您还可以更改for的{​​{1}},以使您已有的功能正常运行。

答案 4 :(得分:0)

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

HTML:

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

jQuery Selector:

$( '#TheLabel' )

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

$( 'label[for=TheLabel]' )