5

我有下面的html。我想做什么取决于一些条件。我想继续更改文本,即Sometitle.

<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/

4

5 回答 5

3

该文本Sometitle是一个孤立节点,您将要在它周围包裹一个元素以正确操作它

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

编辑

但是由于您很遗憾无法更改 html,您可以按照另一篇文章中的解决方案建议进行操作。他们有一个错字,我在这里更正了:

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

检查您更新的 JsFiddle

于 2013-03-07T06:07:53.917 回答
3

如果您不希望它在一行中。

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

jsfiddle

于 2013-03-07T06:20:53.427 回答
0

试试这个

$("#header").html($("#header").html().replace("Sometitle","Its a thrusday today !"));
于 2013-03-07T06:09:15.483 回答
0

仅在这种情况下,在呈现到浏览器时

var new_s = "Its a thrusday today !";
var s = $("#header").children(":first").html();
$("#header").text(new_s+"<div>"+s+"</div>");
于 2013-03-07T06:25:40.543 回答
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

于 2013-03-07T06:49:39.373 回答