如何清除内容而不收到可怕的“停止运行此脚本”?对话?

2023-11-30

在 Windows 窗体中,某些控件上有 BeginUpdate/EndUpdate 对。我想要类似的东西,但是对于 jQuery。


我有一个 div,里面有一个 div。像这样:

<div id='reportHolder' class='column'>
  <div id='report'> </div>
</div>

在内部 div 中,我添加了一堆(7-12)对 a 和 div 元素,如下所示:

<h4><a>Heading1</a></h4>
<div> ...content here....</div>

内容的总大小可能是 200k。每个 div 仅包含一个 HTML 片段。其中,还有无数<span>元素,包含其他 html 元素,并且它们嵌套,深度可能为 5-8 层。我认为没什么特别的。 (UPDATE: using 这个答案,我了解到该片段中有 139423 个元素。)

添加完所有内容后, 然后我创建了一个手风琴。像这样:

$('#report').accordion({collapsible:true, active:false});

这一切都很好。

问题是,当我尝试清除或删除报表 div 时,需要很长的时间,并且会出现 3 或 4 个弹出窗口,询问“您想停止运行此脚本吗?”

我尝试了几种方法:

选项1:

    $('#report').accordion('destroy');
    $('#report').remove();
    $("#reportHolder").html("<div id='report'> </div>");

选项2:

    $('#report').accordion('destroy');
    $('#report').html('');
    $("#reportHolder").html("<div id='report'> </div>");

选项3:

    $('#report').accordion('destroy');
    $("#reportHolder").html("<div id='report'> </div>");

在评论中得到建议后,我也尝试过:

选项 4:

    $('#report').accordion('destroy');
    $('#report').empty();
    $("#reportHolder").html("<div id='report'> </div>");

不管怎样,它挂了很长一段时间。

对 Accordion('destroy') 的调用似乎不是延迟的根源。这是删除报表 div 中的 html 内容。

这是 jQuery 1.3.2。

EDIT- 修复了代码拼写错误。

ps:这种情况发生在 FF3.5 和 IE8 上。


问题:

  1. 什么事要花这么长时间?

  2. 如何更快地删除内容?


Addendum

我在“选项 4”期间闯入 FF 中的调试器,我看到的堆栈跟踪是:

data()
trigger()
triggerHandler()
add()
each()
each()
add()
empty()
each()
each()
(?)()    // <<-- this is the call to empty()
ResetUi()  // <<-- my code
onclick

我不明白为什么add()在堆栈中。我正在删除内容,而不是添加内容。恐怕在删除(全部)的上下文中,jQuery 做了一些幼稚的事情。就像它抓取 html 内容一样,文本是否会替换以删除一个 html 元素,然后调用 .add() 放回剩余的内容。

有没有办法告诉 jQuery 在从 dom 中删除 HTML 内容时不传播事件?

在 Windows 窗体中,某些控件上有 BeginUpdate/EndUpdate 对。我想要类似的东西,但是对于 jQuery。


related:
jquery:最快的 DOM 插入?


您应该尝试绕过 jQuery 并在销毁手风琴后自行清空内容:

$('#report')[0].innerHTML = '';

这会快得多,但可能会导致 IE 泄漏内存(jQuery 竭尽全力确保没有引用阻止 IE 进行垃圾收集,这也是删除数据如此缓慢的部分原因)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何清除内容而不收到可怕的“停止运行此脚本”?对话? 的相关文章

随机推荐

  • 将 System.ComponentModel 默认值属性内的 DateTime 属性的默认值设置为 DateTime.Now

    有谁知道如何使用 System ComponentModel DefaultValue 属性指定 DateTime 属性的默认值 例如我尝试这个 DefaultValue typeof DateTime DateTime Now ToStr
  • 父级和子级复选框

    div div
  • 类型错误:“int”对象不可调用

    鉴于以下情况 a 23 b 45 c 16 round a b 0 9 c 运行上面的命令会输出错误 TypeError int object is not callable 如何将输出舍入为整数 在代码的其他地方 您有类似这样的内容 ro
  • Makefile - 找不到共享库

    我有一个 C Linux 项目的 Makefile MODE dbg DIR somdir MODE SRC FILES a cpp b cpp H FILES a h LDFLAGS L DIR lib linux Wl R ORIGIN
  • 如何优化 vlookup 以获得高搜索次数? (VLOOKUP 的替代方案)

    我正在寻找 vlookup 的替代方案 在感兴趣的上下文中提高性能 上下文如下 我有一个很大的 key data 数据集 100 000 条记录 我想对数据集执行大量VLOOKUP操作 典型用途是对整个数据集重新排序 我的数据集没有重复的键
  • Android 地图 API v2 中的彩色折线

    我想在 android 地图 api 版本 2 中绘制折线 我希望它有多种颜色 最好有渐变 但在我看来 折线只允许有单色 我怎样才能做到这一点 我已经有了 api v1 覆盖层来绘制我喜欢的内容 所以大概我可以重用一些代码 public c
  • 在Python中获取具有预先指定扩展名的文件基名

    我有以下字符串 path1 path2 foo bar qux txt 我想要做的是通过指定扩展名来提取基本名称 如果我将扩展定义为 bar qux txt那么基本名称是 foo 那么如果扩展名是 qux txt那么基数是 foo bar
  • Matplotlib 视频创建

    编辑 欧内斯特的重要性提供了答案 但是我仍然邀请大家解释 为什么savefig逻辑不同于animation logic 我想制作视频matplotlib 我浏览了手册和示例 但我就是不明白 关于matplotlib 我总是复制示例 因为经过
  • 关注 R 中的startsWith 和多种模式

    我注意到一个问题或疑虑startsWith 功能 以下代码显示两个不同的选择 第一个行为正常 是这样的代码块 dt test lt data table a c abcd poo abla ba id c 1 2 3 4 dt test s
  • 如何将 iOS 设备键盘更改为特定语言

    在iOS中 开发者可以获取当前设备语言和区域设置 但是 如果我们想根据用户的偏好将键盘设置为特定语言 区域设置 当用户位于应用程序的不同部分时 该怎么办 在我的应用程序中 有多种语言 我希望向用户显示阿拉伯语键盘 例如 当用户位于阿拉伯语部
  • 序列化 Drawable 时出现问题

    我有一个对象 它具有三个字段 两个字符串和一个Drawable public class MyObject implements Serializable private static final long serialVersionUID
  • 按作者列出类别〜WITH COUNTER〜(Wordpress)

    这是我得到的代码 它给出了给定作者已发表的类别的列表 但是 我非常希望类别名称旁边有一个数字 告诉作者在不同类别中发表了多少篇文章 有谁知道一个技巧吗 谢谢
  • 无需安装即可使用 SqlServer CE

    Given 干净的机器 不存在 SQL Server CE 一组 sdf 文件 Sql Server CE 数据库 不管它们是如何到达那里的 相关 Sql Server CE 的 DLL sqlceca35 dll sqlcecompact
  • 使用 angularjs 过滤两个选定日期之间的表数据时出现问题

    我正在根据两个选定的日期过滤表格内容 它确实过滤了日期 但结果不正确 dateRange Filter 写在控制器中 生产控制员 angular module app controller ProductionController scop
  • 如何即时播放非 PCM 文件或将其转换为 PCM?

    以下代码适用于某些 wav 文件 但适用于其他文件时 我得到 InvalidOperationException 未处理 Message Sound API 仅支持播放 PCM 波形文件 var webClient new WebClien
  • 在 Java 中将一系列图像转换为视频?

    目前 功能原型拥有工作所需的一切 一个半透明窗口 可以轻松调整您想要记录的位置的大小 多个线程来管理屏幕截图等 但我需要它完成的最后一项任务却没有完成我几个月了 我需要转换所有转储到我创建的文件夹中的图像temp 一切完成后我将其删除 放入
  • 如何在 PHP 中从 csv 文件中提取数据

    我有一个 csv 文件 如下所示 lines 0 text with commas another text 123 text 5 lines 1 some without commas another text 123 text line
  • 赋值和序列点:这怎么有歧义?

    考虑 C 代码a a a 没有用于赋值的序列点 因此此代码在编译有关未定义操作的警告时会产生警告a 可能的值是什么a这里可以有吗 这好像是a不可能改变价值观 这里实际上是否存在未定义的行为 或者编译器只是懒惰 序列点违规的未定义行为规则对于
  • 将图像添加到 JavaFX TableView 列中

    我是 Java 和 OOP 新手 并且陷入了向 tableview 列添加图像的困境 代码似乎有效 我可以看到学生的姓名正确 但图像未显示在列中 我收到此错误并且无法理解如何使其工作 javafx scene control cell Pr
  • 如何清除内容而不收到可怕的“停止运行此脚本”?对话?

    在 Windows 窗体中 某些控件上有 BeginUpdate EndUpdate 对 我想要类似的东西 但是对于 jQuery 我有一个 div 里面有一个 div 像这样 div class column div div div 在内