jquery更改div上的文本

时间:2011-09-29 03:16:44

标签: jquery

我只需要更改div中的文本,其中包含其他元素。我尝试了text方法,但它改变了div的全部内容。

示例div:

<div class="mydiv">
MY TEXT HERE
<ul>
   <li>BLAH</li>
   <li>BLAH</li>
</ul>
</div>

这就是我现在尝试过的:$(".mydiv").text("MY NEW TEXT");

5 个答案:

答案 0 :(得分:7)

$.fn.extend({
    text2: function(t){
        return this.each(function(a,b){
            $(b).contents().map(function(c,d){
                return (d.nodeType === 3 ? d : null);
            }).get(0).data = t;
        });
    }
});

有我的解决方案。仅影响在选择器中找到的第一个文本节点,然后将其替换为提供的文本。使用此功能,$('.mydiv').text2('MY NEW TEXT');应该有效flawlessly

答案 1 :(得分:2)

将div的文本放入另一个元素,然后用jQuery选择并替换该元素。

$('.mydiv div.text').text("MY NEW TEXT")

<div class="mydiv">
<div class="text">MY TEXT HERE</div>
<ul>
   <li>BLAH</li>
   <li>BLAH</li>
</ul>
</div>

答案 2 :(得分:1)

只需使用.html()方法:

$(".mydiv").html("MY NEW TEXT");

演示:http://jsfiddle.net/andresilich/mtH27/

答案 3 :(得分:1)

针对特定情况尝试此操作:http://jsfiddle.net/mtH27/10/

$(".mydiv")[0].firstChild.nodeValue = "Is this what you want?"

答案 4 :(得分:0)

此方法更容易:不是尝试使用文本节点操作,而是从元素中删除所有标记,替换内部文本,并附加标记:

http://jsfiddle.net/NFEgE/1/

如果您需要担心多个文本节点,这将变得更加复杂。