暂时删除,后来重新插入DOM元素?

是否有一些jQuery的魔法,可以让我做到以下几点:

[0 -用HTML定义一些元素(例如,一个选中的复选框)

1-更新通过使用.attr设置其属性之一(),它的DOM元素(例如,通过设置“选中”使用.attr属性('检查',真))

2-暂时从DOM删除该元素

3重新插入原始的元素到DOM,同时保留其所有属性(即,使其被选中,因为它是在步结束1--不喜欢它是当在HTML最初定义)

我感兴趣的去除DOM中这些元素(而不是躲在他们)为什么的原因是,我已经注意到这是提高性能的好一点。 我的页面具有三个不同的“州”和DOM元素的总数的三分之一,需要在任何给定的状态。 [我要保持它与不同状态的单个页面,而不是它分成三个独立的页。]

到现在为止我已经删除并重新插入的元素到DOM通过存储在一个VAR值

$("#myElement").html()

然后删除它,但现在我注意到,在重返社会的HTML进入DOM发[步骤1]的变化已经“撤消”。

有没有办法做到这一点 - 从在保留其所有属性后重新插入方式的DOM暂时删除不需要的东西吗?

感谢您的见解,

拉拉

--------------解决方案-------------

您可以使用clone方法:

var els = $('.els'), saved = els.clone (true);
els.remove ();
// .... do other stuff
saved.appendTo ($('.wherever-you-want-to'));

这就是说,虽然,这是更好地展示和隐藏起来(通过display: none为例),比操作DOM,因为它是非常昂贵的。 如果有必要,使用DOM的插入和删除(同上),而不是.html ()它重新从每次给定的字符串的一个节点。

问题六天后得到的回答的jQuery 1.4发布包含分离的方法。 这确实你寻找什么。

var detached = $('#element').detach();
$('body').append(detached);

刚刚从文档中删除元素,并保持对它的引用。 有没有必要克隆。

var el;

function removeEl() {
el = $("#myElement")[0]; // Get the element itself
el.parentNode.removeChild(el);
}

function reinsertEl(node) {
node.appendChild(el);
}

顺便说一句,因为你在你的例子提到这个问题,它更简单,更清晰,更快速地设置checked复选框的属性,而不是直接使用attr() 有没有必要涉及到的所有属性,事实上jQuery的attr() 通常不支持。 只是做$("#myElement")[0].checked = true; 它可以在所有的主流浏览器。

分类:JavaScript的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.521 (s). 10 q(s)