2013-03-07 86 views
5

我有下面的html。我想要做什麼取決於一些條件。我想繼續更改文字Sometitle如何更改只有文本里面有其他div的div

<div id="header"> 
    Sometitle 
    <div> 
     <div> 
      aa 
     </div> 
     <div> 
      bb 
     </div> 
    </div> 
</div> 

我試過使用下面的jquery,但它也刪除了其他的div。

$("#header").text("Its a thrusday today !"); 

我該如何做到這一點?在任何情況下我都不能修改這個HTML。我只需要使用jquery並完成這件事。

這裏是一個的jsfiddle我創建:http://jsfiddle.net/qYUBp/

+0

你控制JavaScript,但對HTML沒有影響? – 2013-03-07 06:06:03

+0

它不是我的項目,我只是爲它工作了一天' – Yasser 2013-03-07 06:07:50

+0

可能的重複:http://stackoverflow.com/questions/4106809/in-jquery-how-can-i-change-an-elements-text-不改變其子元素 – 2013-03-07 06:07:51

回答

3

如果你不希望它在一個單一的線。

var tmp=$("#header>div").html(); 
$("#header").text("its thursday").append('<div>'+tmp+'</div>'); 

jsfiddle

3

該文本Sometitle是一個孤兒節點,你會想包裝元素圍繞它來正確地處理它

編輯

但是,由於您遺憾地無法更改html,因此您可以按照解決方案中的建議other post進行操作。他們有一個錯字,我在這裏更正:

var your_div = document.getElementById('header'); 
var text_to_change = your_div.childNodes[0]; 
text_to_change.nodeValue = 'new text'; 

檢查updated JsFiddle

+0

他說他不能改變HTML。 – 2013-03-07 06:09:54

+2

我同意,但OP特別聲明他們需要在不更改HTML的情況下執行此操作。 – 2013-03-07 06:10:11

+0

謝謝@BradKoch,我更新 – 2013-03-07 06:20:28

0

試試這個

$("#header").html($("#header").html().replace("Sometitle","Its a thrusday today !")); 
+0

標題需要再次更新n,所以替換(「舊」,「新」)不能在我的情況下工作 – Yasser 2013-03-07 06:11:35

+0

這有缺點刪除所有事件處理程序等。還是一個不錯的主意。 – 2013-03-07 06:12:31

+0

這可以通過在標題中添加一個span來輕鬆完成,但是yasser希望不更改html。所以這是我找到的方式。 – 2013-03-07 06:16:04

0

這種情況下,只有,呈現到瀏覽器的時候

var new_s = "Its a thrusday today !"; 
var s = $("#header").children(":first").html(); 
$("#header").text(new_s+"<div>"+s+"</div>"); 
+0

我不認爲這是一個好主意,文本「'

'" and "'
'」出現在文檔中。你的意思是'.html(...)'? – 2013-03-07 07:36:50

0

可以選中此

headerClone = $("#header").clone(); 
$(headerClone).find('div').remove(); 
var currentText = $(headerClone).html().replace(/(\r\n|\n|\r|\t)/gm,""); 

newHtml = $("#header").html().replace(currentText,"Gotcha"); 
$("#header").html(newHtml); 

JSFIDDLE

相關問題