在显示flash消息时增加DOM膨胀
Adding DOM bloat when displaying flash message
在我的Rails应用程序中,当用户保存时,它使用Ajax保存帖子,然后执行update.js.erb文件。在这个文件中,我有一些jQuery:
$('body').append('<div class="message">Saved</div>');
因为我这样做,每次用户保存时,它都会在主体中添加更多的<div class="message">Saved</div>
。有什么办法能让我停止,还是无所谓?
在显示新消息之前清除其他消息是一种懒惰(但简单)的方法:
$('.message').remove();
$('body').append('<div class="message">Saved</div>');
首先,除非保存发生了数千次,否则这可能无关紧要。请记住,图片是非常大的,所以在一个网页中,几kb的额外文本与一些图片相比显得苍白。
第二,您有几个选项,只能在DOM中使用其中一个:
- 显示给用户后,然后从DOM中删除它(也许是定时器)。
- 有一个且只有一个消息,并在需要时显示/隐藏它(这可能是最简单的)。
- 查看是否已经在页面中并重用它。
$(".message").html("Saved").show().delay(2000).fadeOut(1000);
如果你使用这个,你只需要把消息对象放在你的页面中一次开始,要么在原始页面HTML中,要么在页面启动代码中追加一次。然后,让CSS默认为隐藏,这样它只在你想要的时候显示。
或者,如果你使用基于类名的CSS3过渡,你可以使用jQuery的addClass()
和removeClass()
。
相关文章:
- JQuery使计数器每次更改时都会增加
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- Windows形成web浏览器控件和Javascript更改的DOM
- Datatables:通过DOM数据源中的名称引用列
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何增加同时按键总数
- DOM事件通过JSON转换为java
- 如何使用css动画从中心增加边界线
- 将DOM节点值与字符串Javascript进行比较
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 流星中DOM的繁殖
- DOM元素和angular元素之间的主要区别是什么
- 如何使用 HTML 5 日期输入增加月份 - 将结果输出到 DOM
- 如何增加turn.js的DOM页面的数量
- 增加页面上所有数字的字体大小(Javascript, JQuery, DOM操作)
- 为每次传递向 DOM 添加增加的计数
- 在显示flash消息时增加DOM膨胀