如何合并第一个孩子的父母内容?

时间:2014-02-26 15:21:25

标签: javascript jquery merge parent-child textnode

我无法弄清楚如何将第一个孩子的父内容与jQuery合并。

我想合并其<a>子元素中元素的所有元素(包括文本节点)。

我有这个:

<td class="row">
  <a href="#">
    <span class="iconouter">
                <img class="icon" src="...">
            </span> Type of document
  </a>
  : Form
  <span class="type-nb">(1)</span>
</td>

我想这样做:

<td class="row">
  <a href="#">
    <span class="iconouter">
                    <img class="icon" src="...">
                </span> Type of document: Form <span class="type-nb">(1)</span>
  </a>
</td>

3 个答案:

答案 0 :(得分:1)

最后,我找到了一个使用jQuery contents()函数的解决方案:

$('.row').each(function() {
    $(this).find('a').append($(this).contents()[1], $(this).contents()[2]);
});

它不是很灵活,但它符合我的需要。谢谢大家!

答案 1 :(得分:0)

嗨,你可以这样做:

var test = jQuery('.row').html().replace($("<div />").append($('.row a').clone()).html(),'');
jQuery('.row').html($('.row a').clone()).html();
jQuery('.row a').append(test);

我在这里创造了一个小提琴:

http://jsfiddle.net/j5Uqd/

答案 2 :(得分:0)

评论后更新

小提琴http://jsfiddle.net/WaW27/

HTML

<table>
    <tr>
        <td>
           <a href="#">
             <span class="iconouter">
               <img class="icon" src="...">
             </span>
              Type of document
           </a> 
            : Form 
           <span class="type-nb">(1)</span>
       </td>
    </tr>
</table>

JS

$(document).ready(function(){
    $('td').each(function(){
        $content = $(this).children().first().append(  
            $(this).html().replace(   
                $('<div>').append( $(this).children().first().clone() ).html(), '' )  
         ); 
        $(this).html('').append($content);
    });
});

结果:

 <tr>
    <td>
      <a href="#">
            <span class="iconouter">
            <img class="icon" src="...">
            </span>
             Type of document


             : Form 
           <span class="type-nb">(1)</span>
        </a>
     </td>
</tr>