2013-02-20 35 views
9

有两种方法,我会用它来显示/隐藏内容:创建/销毁HTML元素与隐藏它们直到需要,哪个更好?

  1. 创建/所需/不通过jQuery.append()和jQuery.remove()必要时摧毁元素。
  2. 已经在html中包含所有内容,但在适当时隐藏/禁用这些元素。

那么什么是最佳实践?我可以看到两种方法的优点/缺点。

作为一个例子,我有一个网站,人们可以用他们的摄像头拍摄照片。网络摄像头所在的窗口显示在一个单独的窗口中,与所有其他网站内容重叠。拍摄照片时,重叠的网络摄像头会再次移除。所以我可以隐藏它或插入/删除它。

回答

9

在两种方法之间有一种方法可以充分利用您提到的每种方法。你提到了使用append和remove来创建和销毁元素。必须明确的是,创建元素与将其附加到DOM不同。即

创建一个div

var node = $('<div>node content</div>); 

不同于安装一个div:

parent.append(node); 

所以你能做的就是简单地分配你的元素的变量(即缓存什么他们到变量),然后附加他们,并酌情分离它们。通过这种方式,您不必每次创建相同的元素就可以在摧毁它之后使用它(从而导致冗余的处理成本)。

同时,您不必将其附加到DOM树上,然后隐藏它(即不使用它,从而导致UI/UX成本增加,因为整个体验在页面底部慢装载有节点,其中一些根本不被用户使用)。

我认为这是最好的方法。

+0

感谢您给我正在寻找的答案类型! – xrDDDD 2013-02-20 13:56:07

+0

很高兴我有帮助:) – abbood 2013-02-20 13:59:15

+4

*“然后附加他们,并酌情分离他们”*等等,什么?在初始DOM负载时DOM修改比解析静态元素要昂贵得多。这是毫无疑问的。几乎每次修改DOM时,都必须重建DOM,并导致重新流动和重新绘制操作。 – 2017-07-11 17:50:02