2016-01-22 69 views
0

我想只更新标签内的文本,但不以任何方式触摸输入值。如何更新也包含一个输入元素的标签文本

<div id="shippingRates"> 
    <label> 
     <input type="radio" name="shippingrate" class="shippingratequote" value="GUID1" /> 
     Text I want to Update 
    </label> 
    <label> 
     <input type="radio" name="shippingrate" class="shippingratequote" value="GUID2" /> 
     Random Text 
    </label> 
</div> 

在控制台打左右,此Javascript返回标签只是文本:

$('#shippingRates :input[value="GUID1"]').parent().text(); 

但正在发生的事情是,如果我执行:

$('#shippingRates :input[value="GUID1"]').parent().text("TEXT UPDATED!"); 

它会覆盖整个Label元素的内容,包括输入元素。

我怎样才能够使用jQuery/JavaScript更新文本?编辑:仅供参考,我无法对HTML进行任何更改,因为它来自外部服务器端函数。

感谢

+0

用跨度和目标跨度元素来包装文本。所以你可以:'$('#shippingRates:input [value =“GUID1”]')。next('span')。text(“TEXT UPDATED!”);' –

回答

3

可以使用DOM来获取文本节点以下输入:

$('#shippingRates :input[value="GUID1"]')[0].nextSibling.nodeValue= 'TEXT UPDATED!';
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="shippingRates"> 
 
    <label> 
 
     <input type="radio" name="shippingrate" class="shippingratequote" value="GUID1" /> 
 
     Text I want to Update 
 
    </label> 
 
    <label> 
 
     <input type="radio" name="shippingrate" class="shippingratequote" value="GUID2" /> 
 
     Random Text 
 
    </label> 
 
</div>

3

另一种方式来做到这一点...

​​
相关问题