2011-01-27 81 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');