【发布时间】: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