【问题标题】:jQuery Events in IE6 stop working or crashes IEIE6 中的 jQuery 事件停止工作或崩溃 IE
【发布时间】:2011-12-19 23:09:27
【问题描述】:

我有这个示例小提琴页面:http://jsfiddle.net/MarkSchultheiss/sPDSZ/

此页面有四个事件管理器:其中两个实际上是每个捕获的两个事件。

删除按钮上的两个句柄鼠标事件高亮/删除删除按钮祖先上的高亮。

单击删除按钮会删除突出显示的祖先。

单击“添加”按钮使用 jQuery 克隆添加第一组的副本,其中事件、数据和内容全部克隆。

在 IE8 中它可以正常工作,即使在兼容模式下也是如此。

然而,在 IE6 中,添加、删除和鼠标悬停事件停止发生,添加了几个组,然后删除一些,然后添加更多等(注意不要删除根组)并非所有元素都会丢失事件,但最终会继续使用将降级为除 Add 事件之外的任何工作。

知道如何解决 jQuery IE6 组合中看似存在的错误吗?

注意:在我提取这个简单示例的原始页面中,它在某些情况下会导致页面上的浏览器崩溃。

背景:最初有 .delegate,每次都崩溃,改为“on()”,现在只在部分时间崩溃。

客户端需要使用 IE6,所以我别无选择。 :(

编辑:IE6 中的事件管理中是否有一些不同的东西可能会影响这里我可以做一些不同的事情来避免?

【问题讨论】:

  • 大胆猜测:尝试使用.closest('.wrapperRow') 查找目标容器,而不是链接.parent() 调用。我记得 IE6 DOM 遍历和文本节点有问题...
  • 我尝试了您对 .closest jsfiddle.net/MarkSchultheiss/sPDSZ/9 和 parentsUntil jsfiddle.net/MarkSchultheiss/sPDSZ/8 的建议,但在多个组上重复添加/删除后,这两个事件管理也停止在 IE6 上工作。
  • 当您克隆模板行时,我也会尝试.clone(false)。看起来您不需要克隆事件处理程序,因为它们已委托给 #wrapperRows。这可能对 IE6 有帮助...
  • 我更改为 clone(false,true) 并且它仍然停止事件。有时部分(如某些组之前)直到最终无处不在,通常使用 .addClass(仍在某些元素上)。
  • 如果您使用true 作为第二个参数,事件仍将被克隆。见docs

标签: jquery internet-explorer-6


【解决方案1】:

我在 IE7 上发现了一个非常相似的问题。在我的情况下,浏览器尝试在 DOM 尚不可用的元素上使用 JQuery 选择器(时间问题),所以也许检查一下你何时使用 .clone(),如果你使用的项目'正在克隆存在(在您尝试克隆它时)。

这似乎与旧的 IE 浏览器在应用程序根部处理 DOM 操作的方式有关。

可以在以下问题的答案中找到全面的解释。

Why does my website crash in IE?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    相关资源
    最近更新 更多