【问题标题】:jquery accessing label of inputjquery访问输入标签
【发布时间】:2012-04-18 06:37:14
【问题描述】:

我有一些这样的 HTML:

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

如何更改标签的文字?

试过了

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

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

谢谢。

【问题讨论】:

标签: jquery


【解决方案1】:

你已经解决了一些问题。 “for”不标识标签,它标识您正在标记的控件。您需要正确使用“for”,并且需要给它一个 ID:

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

然后:

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

会起作用的。

【讨论】:

    【解决方案2】:

    使用 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');​
    

    【讨论】:

    • forlabel 元素的一个属性,具体来说。 w3schools.com/tags/tag_label.asp
    • 是的,只是记住了,已修复 ;) 哈哈,我什至没有考虑这是否是我刚刚自动输入的表格
    【解决方案3】:

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

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

    您还可以将for 更改为id 以使您已经拥有的代码能够正常工作。

    【讨论】:

      【解决方案4】:

      更新:查看@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.

      【讨论】:

        【解决方案5】:

        '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]' )
        

        【讨论】: