如何更改已包含其他DOM元素的div文本?

时间:2012-06-06 05:19:07

标签: jquery html dom

在我的页面中,我有很多DIV和P标签,我想将所有这些标签的文本更改为“Hi”(任意单词)。我能想到的只有:

$('div, p').not('.btn').each ( function() {

      var oT = $(this).text();
      $(this).text ( 'hi ' + oT );
  });

 <div class='btn'>Change All Text</div>

       <div id='container1'>
       main content
       <div>
         div > div
         <p>
           div > div > p
         </p>
       </div>

       <p>div > p </p>
       <p>div > p </p>

  </div>

  <p>
    p
  </p>

  <p>P
  </p>

请参阅:http://jsbin.com/usepuq/

现在,它不是改变所有Div的文本,而是改变父对象的文本。一旦它改变了父对象的文本,自动显然所有的孩子都会消失。所以我们只剩下一个Div和两个P标签。

我能做的另一件事是:

 var oT = $(this).html();
 $(this).html ( 'hi ' + oT );

这会以某种方式更改父对象的文本,并且子项保持不变。

所以问题是如何改变所有DIV和P标签的文本。嵌套深度没有限制。

P.S。这不是一个真正的问题,我只是想看看它是否可以完成。

1 个答案:

答案 0 :(得分:1)

你试过这个吗?

$('.btn').click ( function () {
  $('div, p').not('.btn').each ( function() {

      $(this).prepend('hi');

  });
});

示例:Fiddle