2012-10-15 47 views
0

我有一个隐藏的div,我想添加(追加)到DOM中的另一个位置。我的代码没有按预期工作;将隐藏的div(包括它的内容)添加到DOM中

$('[class*="time-span"]').on('click', function() { 

    var modelPanel = $('.model-detail-panel'); 

    modelPanel.contents().wrap('<div class="model-detail-panel" id="model-detail">').insertAfter('.timeline'); 
    modelPanel.slideToggle('fast', function() { 
     $('html,body').animate({ 
      scrollTop: $(this).offset().top 
     }, 500); 
    }); 
}); 

div'model-detail-panel'的内容被插入到正确的位置,但实际的周围div未被插入。为什么会这样,并且是我使用最合适的方法来实现这一目标的方法?

在此先感谢...

+0

为什么使用'contents'方法?为什么'包裹'? – undefined

+1

为什么要将'.model-detail-panel'封装在同一个类的'div'中?顺便说一句,'wrap()'方法返回被包装的对象,*不包含它们被包装的元素;因此在'wrap()'调用之后,你仍然在使用contents()元素/节点。 –

+0

我想要将整个div插入DOM中的其他地方。在这种情况下克隆会更好吗? – webworker

回答

0

为了保持洽与其他链接方法,wrap()返回jQuery对象,它被称为上,而不是包装元素。

可以以包括在insertAfter()操作包装元素应用parent()到结果:

modelPanel.contents().wrap(
    '<div class="model-detail-panel" id="model-detail">' 
).parent().insertAfter('.timeline'); 
1

的问题是,所述wrap()方法返回被包裹,所述的元件,不新创建的包装-元件。因此,你应该使用parent()

modelPanel.contents().wrap('<div class="model-detail-panel" id="model-detail">').parent().insertAfter('.timeline'); 

参考文献:

0
var wrapped = $('<div class="model-detail-panel" id="model-detail/">').insertAfter('.timeline') 
wrapped.append(model.contents) 
+0

Argghhh ..大卫托马斯的解决方案比我的清洁..用他的 –