2013-10-11 26 views
2

见的jsfiddle第一JQuery的包裹克隆后的整个部分

JSFIDDLE

我不得不源结构

​​

转换成

<div class="newout"> 
    <ul> 
     <li class="haha"> 
      <a>im here</a> 
      <span><a>im here</a></span> 
     </li> 
     <li class="haha"> 
      <a>to save</a> 
      <span><a>to save</a></span> 
     </li> 
     <li class="haha"> 
      <a>our</a> 
      <span><a>our</a></span> 
     </li> 
     <li class="haha"> 
      <a>country</a> 
      <span><a>country</a></span> 
     </li> 
    </ul> 
</div> 

这意味着我必须做的以下程序:

  • 1.clone a标签
  • span标签
  • 它3.append以前a标签
  • 4.wrap中li标记以前的标签2.wrap它,并添加类
  • 5 。然后将所有以前的元素换成ul标记

我不知道如何使用JQuery来实现STEP4。我不知道如何获得这些标签并添加换行。

非常感谢!

+0

这样做的另一种方式http://jsfiddle.net/u3Ttc/2/ – rab

回答

2

尝试

$(document).ready(function() { 

    var $ct = $('.out').removeClass('out').addClass('newout'); 
    var $ul = $('<ul />').appendTo($ct); 
    $ct.children('a').each(function(){ 
     var $this = $(this); 
     $this.wrap('<li class="haha" />'); 
     $('<span />').append($this.clone()).insertAfter($this); 
     $this.parent().appendTo($ul) 
    }) 

}); 

演示:Fiddle

或者

$(document).ready(function() {  
    var $ct = $('.out').removeClass('out').addClass('newout'); 
    var $ul = $('<ul />').appendTo($ct); 
    $ct.children('a').each(function() { 
     var $this = $(this); 
     $('<li />', { 
      'class': 'haha' 
     }).append(this).append($('<span />').append($this.clone())).appendTo($ul) 
    }) 
}); 

演示:Fiddle

+0

随着你的演示,我终于明白了它的机制。非常感谢你!!! – Darklizard