2015-09-21 62 views
1

也许它是一种愚蠢的但它仍然不起作用。我,m试图用另一个div包装不同类的两个div,但我当前的输入只是自动关闭div。将两个div分组在另一个

有几组具有.panel标题和.panel-body类的div集合,它们有两组。

我试图用一个带有.panel面板默认类的div来包装每一对,但是我的代码关闭了div,所以它只创建了两个空的div。我不知道我的代码有什么问题。即时通讯使用jQuery

<html> 
<body> 
<div class="panel-head"></div> 
<div class="panel-body"></div> 
<div class="panel-head"></div> 
<div class="panel-body"></div> 
<div class="panel-head"></div> 
<div class="panel-body"></div> 
</body> 
</html> 

而jQuery的

$('div.panel-head').before (
'<div class="panel panel-default">'); 
$('div.panel-body').after ('</div>'); 

但这个代码创建两个div自动关闭和打开的标签不是允许缠绕。我无法在智能手机上创建的jsfiddle监守IM和无法使用PC互联网上,请别人见识一下如何绕过这一行为

回答

3

我把这个从here

$(".panel-head").each(function() { 
    $(this).next(".panel-body").addBack().wrapAll("<div class='panel panel-default' />") 
}); 

编辑

它最初使用andSelf(),但它已被弃用,我改变它addBack()

+2

注意'andSelf'是有利于['addBack'(https://api.jquery.com/addBack/) –

+0

所以这个代码将得到一流的的div弃用.panel-head在右边有一个.panel-body div?我只是怀疑为什么索引是在函数值上设置的? –

+0

确实。 “索引”不是必需的,因为它没有被使用。我将删除它。 –

0

希望这是你在找什么。你将不得不做一些错误检查(例如头和身体的长度必须相同)。

// Get all heads and bodies 
 
var $phead = $('.panel-head'); 
 
var $pbody = $('.panel-body'); 
 

 
// loop to create default panel and insert head and body 
 
for (int i = 0; i < $phead.length; i++) 
 
    { 
 
    var h = $($phead[i]); 
 
    var b = $($pbody[i]); 
 
    
 
    // create new div 
 
    var d = $('<div />', class: 'panel-default'); 
 
    // append body and head 
 
    h.appendTo(d); 
 
    b.appendTo(d); 
 
    
 
    //append new div to body 
 
    $('body').append(d); 
 
}

+0

这个解决方案工作正常,但另一个调整得更好,但这个更适合处理更大的对象链,谢谢 –