我有两个单选按钮,每个按钮都在标签里。
<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更改标签文本,但它替换了整个标签内容,包括无线电框。
$('fieldset>label:eq(0)').text('Some text');
$('fieldset>label:eq(1)').text('Some text');
我怎样才能只更换标签文本而不碰收音机盒?
发布于 2022-02-17 10:37:37
您应该考虑重新排列HTML。
$('fieldset>label:eq(0)').text('Some teqxt');
$('fieldset>label:eq(1)').text('Some text');
<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>
发布于 2022-02-17 10:42:42
使用简单的普通JS很容易(不过,对jQuery一无所知,在2015年停止使用),并且不需要对标记进行任何更改:
document.querySelector('fieldset>label').childNodes[1].textContent = ' foo';
document.querySelector('fieldset>label+label').childNodes[1].textContent = ' bar';
<fieldset>
<label><input type="radio" name="invoice_type" value="Receipt"> Receipt</label>
<label><input type="radio" name="invoice_type" value="Invoice"> Invoice</label>
</fieldset>
发布于 2022-02-17 10:44:59
下面是一个不需要更改HTML并使用jquery
的解决方案
$('fieldset>label:eq(0)').contents()[1].textContent = 'Some teqxt';
$('fieldset>label:eq(1)').contents()[1].textContent = 'Some text';
如果<label>
标记中有多个标记,则可以使用更正确的过滤版本:
$('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';
https://stackoverflow.com/questions/71156415
复制相似问题