0

以下是已创建的标签。

<div class="2013"><p>Item 1</p></div>
<div class="2013"><p>Item 2</p></div>
<div class="2012"><p>Item 3</p></div>
<div class="2012"><p>Item 4</p></div>
<div class="2012"><p>Item 5</p></div>
<div class="2011"><p>Item 6</p></div>

我需要使用 jQuery 将它们排列如下。

<div id="2013">
    <div class="2013"><p>Item 1</p></div>
    <div class="2013"><p>Item 2</p></div>
</div>
<div id="2012">
    <div class="2012"><p>Item 3</p></div>
    <div class="2012"><p>Item 4</p></div>
    <div class="2012"><p>Item 5</p></div>
</div>
<div id="2012">
    <div class="2011"><p>Item 6</p></div>
</div>
4

2 回答 2

6

尝试

//here find out the divs you want to target - this filter is for demo only
var $targets = $('div');

var classes = {};
$targets.each(function(){
    classes[this.className] = this.className;
})

$.each(classes, function(key, value){
    $targets.filter('.' + key).wrapAll($('<div />', {
        id: key
    }))
})

演示:小提琴

于 2013-09-03T06:43:00.593 回答
1

使用eachwrapAll()

尝试这个..

var tempObj={};
$('div').each(function(){
  var className=this.className;
  tempObj[className]=className;
});
$.each(tempObj,function(i,v){
  $('.'+v).wrapAll('<div id="'+v+'"></div>')
});

在这里摆弄

于 2013-09-03T06:49:53.747 回答