2011-12-19 70 views
2

我有这个样本小提琴页:http://jsfiddle.net/MarkSchultheiss/sPDSZ/的jQuery事件停止工作或崩溃,IE

该网页上有四个活动经理:其中两个是实际拍摄的每两个事件。

两个处理删除按钮上的鼠标事件突出显示/删除删除按钮祖先上的突出显示。

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

点击添加按钮,使用jQuery克隆添加第一组的副本,所有克隆的事件,数据和内容。

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

任何想法如何解决什么似乎是一个jQuery IE6组合中的错误?

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

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

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

编辑:有什么是事件管理,在IE6不同点在于,我可以做不同的事情,以避免任何可能影响这里

+0

大胆猜测:尝试'.closest( 'wrapperRow')'找到你的目标容器,而不是链接的'.parent()'调用。我记得有IE6的DOM遍历和文本节点的问题... – bfavaretto 2011-12-21 16:21:44

+0

我试过你的.closest的建议http://jsfiddle.net/MarkSchultheiss/sPDSZ/9/和父母Until http://jsfiddle.net/MarkSchultheiss/sPDSZ/8 /,但这两个事件管理器在多个组上重复添加/删除后,都会停止IE6的工作。 – 2011-12-21 16:39:16

+0

克隆模板行时,我也会尝试'.clone(false)'。看起来你不需要克隆事件处理程序,因为它们被委托给'#wrapperRows'。这*可能*帮助IE6 ... – bfavaretto 2011-12-21 16:52:45

回答

0

我发现了一个非常类似的问题在IE7在我的情况下,?。浏览器会试图在DOM尚未提供的元素上使用JQuery选择器(定时问题),因此可能需要检查以了解何时使用.clone(),以及如果您正在克隆的项目存在(当你试图克隆它)

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

可以找到一个全面的解释作为对以下问题的答案。

Why does my website crash in IE?