首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用jQuery更改标签文本,但不更改其他标签元素

用jQuery更改标签文本,但不更改其他标签元素
EN

Stack Overflow用户
提问于 2022-02-17 10:30:49
回答 4查看 48关注 0票数 -2

我有两个单选按钮,每个按钮都在标签里。

代码语言:javascript
运行
复制
<fieldset>
<label><input type="radio" name="invoice_type" value="Receipt"> Receipt</label>
<label><input type="radio" name="invoice_type" value="Invoice"> Invoice</label>
</fieldset>

我试图用这段代码用jQuery更改标签文本,但它替换了整个标签内容,包括无线电框。

代码语言:javascript
运行
复制
$('fieldset>label:eq(0)').text('Some text');
$('fieldset>label:eq(1)').text('Some text');

我怎样才能只更换标签文本而不碰收音机盒?

EN

回答 4

Stack Overflow用户

发布于 2022-02-17 10:37:37

您应该考虑重新排列HTML。

代码语言:javascript
运行
复制
$('fieldset>label:eq(0)').text('Some teqxt');
$('fieldset>label:eq(1)').text('Some text');
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<fieldset>
<label for="label1">Receipt</label>
<input type="radio" id="label1" name="invoice_type" value="Receipt">
<label for="label2">Invoice</label>
<input type="radio" id="label2" name="invoice_type" value="Invoice">
</fieldset>

票数 0
EN

Stack Overflow用户

发布于 2022-02-17 10:42:42

使用简单的普通JS很容易(不过,对jQuery一无所知,在2015年停止使用),并且不需要对标记进行任何更改:

代码语言:javascript
运行
复制
document.querySelector('fieldset>label').childNodes[1].textContent = ' foo';
document.querySelector('fieldset>label+label').childNodes[1].textContent = ' bar';
代码语言:javascript
运行
复制
<fieldset>
  <label><input type="radio" name="invoice_type" value="Receipt"> Receipt</label>
  <label><input type="radio" name="invoice_type" value="Invoice"> Invoice</label>
</fieldset>

票数 0
EN

Stack Overflow用户

发布于 2022-02-17 10:44:59

下面是一个不需要更改HTML并使用jquery的解决方案

代码语言:javascript
运行
复制
$('fieldset>label:eq(0)').contents()[1].textContent = 'Some teqxt';
$('fieldset>label:eq(1)').contents()[1].textContent = 'Some text';

如果<label>标记中有多个标记,则可以使用更正确的过滤版本:

代码语言:javascript
运行
复制
$('fieldset>label:eq(0)').contents().filter(function () { return this.nodeType === 3; })[0].textContent = 'Some teqxt';
$('fieldset>label:eq(1)').contents().filter(function () { return this.nodeType === 3; })[0].textContent = 'Some text';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71156415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档