2013-03-07 42 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

相关问题