如何仅更改元素中的文本节点

Mik*_*iet 45 jquery

我有下一个HTML:

<label for="user_name">
  <abbr title="required">*</abbr>
  Name
</label>
Run Code Online (Sandbox Code Playgroud)

我想Title用jquery 更改标签标题.所以我这样做

$('label[for=user_name]').html('Title')
Run Code Online (Sandbox Code Playgroud)

它取代所有内部html(带abbr标签)

那么,最简​​单的替换方法是Name什么呢?

cha*_*tfl 74

如果使用contents()方法,它还将返回文本节点.由于jQuery没有文本节点方法,因此将最后一个节点转换为DOM节点

$('label[for="user_name"]').contents().last()[0].textContent='Title';
Run Code Online (Sandbox Code Playgroud)

演示:http: //jsfiddle.net/yPAST/1/

  • 注意:在版本9之前的IE中,`textContent`属性是*not*. (3认同)

Dom*_*Dom 44

很抱歉迟到的回复...但是这里只使用jQuery这样做:

$('label').contents().last().replaceWith('Title');
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`replaceWith` 的字符串被视为 HTML;如果它包含标签,它将被解析为 DOM 元素。 (2认同)