2014-03-05 102 views
2

我得到了這段代碼,我想用上下級<div>元素替換「ARRIVAL」文本,但我找不到方法。替換div內的文字

我不想在<div class="left booktext">上使用replaceWith,html或類似的方法,因爲它會替換剩餘的html元素。有一個事件處理程序附加到input class="bookfields",我不想失去它。不幸的是,沒有事件代表團。

<div class="left booktext"> 
    ARRIVAL  
    <div class="bookborder"> 
    <input type="hidden" name="checkin" value="2014-03-05"> 
    <input type="text" class="bookfields hasDatepicker" style="width:65px;" id="checkin-select" placeholder="dd/mm/yyyy"> 
    </div> 
</div> 
+1

試試這個:'$( 'left.booktext')。 get(0).childNodes [0] .textContent =「新文本」;' –

+0

非常感謝!你可以改變它,所以我可以將其標記爲答案? – george

+0

不知道多少jQuery ..所以轉換爲JavaScript :) –

回答

1

在純JavaScript:

var books = document.querySelectorAll('.booktext'); 
for (var i = 0, length = books.length; i < length; i++) { 
    books[i].firstChild.data = "your text"; 
} 
使用jQuery雖然更容易

$('.booktext').contents().first().replaceWith("your text"); 

諮詢
是最好把文本span元素,具有的所有優點案件。
這樣你可以把你的文字以任何順序內格,如:

<div class="left booktext"> 
    <div class="bookborder"> 
    <input type="hidden" name="checkin" value="2014-03-05"> 
    <span>ARRIVAL</span>   
    <input type="text"> 
    </div> 
</div> 

而不是取代:

$('.bookborder span').text('my new text'); 
+0

我看不到純粹的javascript答案.. ops! – SirDeveloper

+0

你說得對! +1 – leaf

1

在純JavaScript,您可以訪問一個文本節點像這樣

var bookText = document.querySelector(".booktext"); 
bookText.firstChild.nodeValue = "Some other text"; 

看到它在這裏工作
http://codepen.io/sajjad26/pen/JkAms