我们正在构建一个相当复杂的UI控件(实际上是一个数据网格),并且当用户滚动网格时(并尽可能使用尽可能高的性能),从DOM树动态添加/删除节点。
我们在IE9& IE10当我们从节点添加/删除子元素时,它会停止触发其keydown事件:
看到这个小提琴: http://jsfiddle.net/T2Lt8/13/
您可以看到,只有两个左右的keydown事件后,父级会停止触发。但是,如果我取消注释keydown处理程序中的$(child).focus()
行 - 它一切正常。
发生了什么事,这是解决这个问题的最佳方法吗?
答案 0 :(得分:0)
在玩了一段时间之后,我找到了以下内容:
如果添加child.style.border = "1px solid red";
,您会看到第二个子项已创建,因为第一个子项未被删除。这是因为有whitespace in the parent。
孩子比父母大。如果您将父级150px设置为150px并且只需单击父级而不是子级,则键事件可以正常且重复地工作。似乎IE9确实保留了绑定。
如果孩子像textarea
一样“不透明”,似乎会使Firefox的行为与我们在IE9中看到的行为相似。