2016-01-22 52 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

另一種方式來做到這一點...

​​
相關問題