2012-10-15 46 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 ..大衛托馬斯的解決方案比我的清潔..用他的 –