如何仅更改具有其他div的div内的文本

时间:2013-03-07 05:59:41

标签: jquery html

我在下面有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/

5 个答案:

答案 0 :(得分:3)

那个文本Sometitle是一个孤儿节点,你想要在它周围包裹一个元素来正确操作它

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

修改

但是,由于您遗憾地无法更改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

答案 1 :(得分:3)

如果你不想把它放在一行。

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

jsfiddle

答案 2 :(得分:0)

试试这个

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

答案 3 :(得分:0)

仅适用于此情况,在渲染到浏览器时

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

答案 4 :(得分: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