javascript - 隐藏与删除 DOM 元素

标签 javascript jquery css optimization

<分区>

隐藏与删除

处理 DOM 元素的最佳方式是什么,隐藏还是删除?。假设环境可以改变几次。元素可以有点击回调或其他事件回调。

隐藏

什么时候隐藏什么最好?。如果单击一个按钮隐藏多个元素,您可以一个一个地隐藏,也可以创建 css 规则来这样做。

选项 1:

<style>
.superContent{/*...*/}

.superContent.noEdit .occultable{
    display:none;
}
</style>

<form class=”superContent” action=”...”>
    <label>Name</label>
    <input type=”text” />
    <input type=”submit” class=”occultable” value=”send”/>
</form>

<button id=”hideAll”>Edit</button>
<script type=”text/javascript”>
    $(“#hideAll”).click(function(){
        $(“.superContent”).toggleClass(“noEdit”);
    });
</script>

http://jsfiddle.net/p8mU8/

另一种选择是只隐藏所需的元素(这些元素可能很少或很多):

选项 2:

<script type=”text/javascript”>
    $(“#hideAll”).click(function(){
        $(“.occultable”).toggle();
    });
</script>

http://jsfiddle.net/JAmF9/


删除

要修改 DOM,您还可以删除不需要的元素并稍后重新插入。

选项 3:

<form class="superContent">
    <label>Name</label>
    <input type="text" />
    <input id="sendbutton" type="submit" class="occultable" value="send"/>
</form>

<button id="hideAll">Edit</button>​

<script type=”text/javascript”>
$("#hideAll").click(function(){
    if( $(".superContent").find("#sendbutton").length>0 ){
        $(".superContent").find("#sendbutton").remove();
    }
    else{
        $(".superContent").append('<input id="sendbutton" type="submit" class="occultable" value="send"/>');
    }
});​
</script>

http://jsfiddle.net/Yj5Aw/

这些只是一些小例子。假设一个包含大量元素的 UI。你认为最好的选择是什么?哪个内存泄漏更少,性能更高?

有一些 javascript 框架,如 kendo-ui,可以删除元素。 jQueryUI 更喜欢隐藏元素,但小部件 Tab sortable 会创建用户临时拖动的选项卡。

最佳答案

很明显你知道

  • 当您想重新显示元素时,隐藏是最好的选择。
  • 当您不需要再次使用这些元素时,删除是最好的选择。

当您隐藏元素然后重新显示它们时,这些元素不会丢失所有回调和数据,特别是在使用 jQuery 时。

当您删除不必要的元素时,您会减少为您的页面分配的内存,但在大多数情况下这不会是一个显着的变化。

关于javascript - 隐藏与删除 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14058013/

相关文章:

javascript - 如何根据背景颜色轻松反转文本颜色

jquery - 元素相对于浏览器的 X 和 Y 位置(注 : Frames are involved)

ie8/ie7之后的jquery不工作

html - 使用数据切换折叠定位到 div

javascript - iframe 文档的实际树结构

css - 将水平导航栏的其余部分设置为另一种颜色?

javascript - 我如何询问用户是否愿意像 Chrome 一样保存用户名/密码?

javascript - 从 facebook url 中提取 id 值

javascript - 在 AngularJS 中解析字典

javascript - 使用 CrossRider 的 DatePicker 不工作?