我想使用jQuery在div
中包装类元素集,但找不到解决方案。
HTML:
<div class="view-content">
<div class="first">content</div>
<div class="first">content</div>
<div class="second">content</div>
<div class="third">content</div>
<div class="third">content</div>
</div>
期望的结果:
<div class="view-content">
<div class="column">
<div class="first">content</div>
<div class="first">content</div>
</div>
<div class="column">
<div class="second">content</div>
</div>
<div class="column">
<div class="third">content</div>
<div class="third">content</div>
</div>
</div>
答案 0 :(得分:7)
演示 http://jsfiddle.net/kQz4Z/8/
API:http://api.jquery.com/wrapAll/
添加了一个分隔线,以便您可以在这里看到差异:) http://jsfiddle.net/kQz4Z/10/
<强>码强>
$(function() {
$('.first').wrapAll('<div class="column" />')
$('.second').wrapAll('<div class="column" />')
$('.third').wrapAll('<div class="column" />')
alert($('.view-content').html());
});
答案 1 :(得分:2)
使用wrapAll()方法
$(function(){
var classes = ['.first', '.second', '.third'];
for (i = 0; i < classes.length; i++) {
$(classes[i]).wrapAll('<div class="column">');
}
});
答案 2 :(得分:2)
或者这是一个非常短暂的动态解决方案:
$(".view-content > div").each(function() {
$(".view-content > ." + this.className).wrapAll("<div class='column' />");
});
答案 3 :(得分:1)
您可以使用.wrap()
将内容包装在div
中,但如果您的内容未被订购,则会变得一团糟,以下是一个例子:
输入
<div class="view-content">
<div class="first">content</div>
<div class="second">content</div>
<div class="first">content</div>
</div>
输出
<div class="view-content">
<div class="column">
<div class="first">content</div>
<div class="column">
<div class="second">content</div>
</div>
<div class="first">content</div>
</div>
</div>
答案 4 :(得分:0)
你可以试试这个:
var arr = $(".view-content div").map(function() { return $(this).attr('class'); }).get();
var results = $.unique(arr);
var i;
for(i = 0; i < results.length; i++){
$('.out').append('<div class="columns"></div>');
$('.'+results[i]).clone().appendTo('.columns:last');
}
alert($('.out').html());
这是一个例子: