2011-01-27 43 views
0

我正在使用jQuery UI的對話框。爲了很好地包裝我的內容窗口,我必須首先在2個空嵌套div(<div><div></div></div>)上加載對話框。然後,在打開對話框之後,我用對話框填充對話框。我花了很多時間...這不是這個問題。請不要建議這種機制的替代方案。在jQuery UI對話框中顯示隱藏的html

我的問題是隻有我需要從像下面的網頁上顯示的html:

<div id="mydialog"> 
    <form> 
    <label for="name">My name:</label> 
    <input type="text" id="name" name="name"/> 
    </form> 
</div> 

不過,我想那上面的html隱藏在網頁上。所以我將css設置爲display: none;。我然後做一個。 append($('#mydialog')).children().css('display', 'block');到對話框的內部div。

我的問題是...如何從網頁中刪除html?通過做一個jQuery追加,我不是一個完整的副本?我遇到性能問題,因爲我有很多這樣的問題。而不是.append(),我應該做一些像$('#mydialog').moveTo('#innerDivOfDialog');?我應該對原始隱藏的HTML做一個$('#mydialog').removeFromWebpage();嗎?有沒有一個removeFromWebpage()的jQuery方法?這裏有什麼合適的機制?

回答

0

jQuery append docs

我們還可以在頁面上選擇一個元素,並將其插入到另一個:

$('.container').append($('h2')); 

如果選擇這種方式的元素插入在別處,它將被移入目標

因此,它被移動,而不是被複制。

如果你在去除仍然有興趣,看到jQuery remove

+0

你是正確的,它正在被移動,不可複製!謝謝! – 2011-01-28 08:48:11

0

您可以從DOM中移除這些元素(不是靜態的HTML,一旦它被客戶端收到,但這實際上只是您稱之爲事物的問題),您只需致電.detach()移動項目後再追加到需要的位置。

$foo.append($('#mydialog').detach()).children().css('display', 'block');