jQuery IE 9在替换"tbody"时崩溃;值,单击其中的元素后
jQuery IE 9 crash when replacing "tbody" value after clicking on an element inside it
我有一个应用程序,我希望在其中的一个用户操作-选中一个复选框-引起一系列操作,除其他外,在表中,复选框似乎被重写了。这在我测试过的所有浏览器中都可以正常工作,除了ie9。
我在这个jsfiddle中复制了这个行为:http://jsfiddle.net/vM7Bu/3/
但本质上是
$('tbody#mytablebody').empty();
for (var i in something) {
$('tbody#mytablebody').append(makeNewRow(i));
}
即使在ie9中,这也可以正常工作,除非它是由用户单击表当前主体内的某些内容触发的。在这种情况下,IE会进入某种无限循环。
这是IE 9中已知的问题吗?可能有哪些变通方法?
EDIT:我把问题缩小了一点-它不是那么多的事件序列触发的点击,而是我们试图取代tbody
的innerHTML
(我认为)的事实,当它里面的元素有焦点。找到这种元素并对其进行blur
处理似乎有所帮助。
可能的解决方法。在点击处理程序中,调用setTimeout(xxx, 0);并从setTimeout函数执行您的工作。如果IE崩溃是因为你正在删除表格的一部分,你在一个点击处理程序的中间,那么setTimeout会让你从点击处理程序中移除表格的那一部分。
伪代码:
$("#whatever").click(function() {
setTimeout(function() {
$('tbody#mytablebody').empty();
for (var i in something) {
$('tbody#mytablebody').append(makeNewRow(i));
}
}, 0);
});
据我所知,虽然我仍然没有设法在不使用jQuery的情况下复制它,但问题是,在IE 9中,如果这些元素仍然具有键盘焦点,则无法从DOM中删除某些类型的元素。这似乎是规则。如果我能在独立代码中重现它,我会向MS报告。
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 单击F5时如何停止页面加载
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 单击jquery清除输入值
- 单击按钮以等待单击按钮
- 在单击href链接的同时下载文件
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- 如何获得类似id的"invokedOn”;使用Bootstrap ContextMenu通过右键单击事件显示文
- 当“<按钮>"单击
- "阅读更多“;当同时单击按钮和正文时
- $(文档).(“click" . .如何在单击文档的其他位置时折叠列表
- "OnClick”;通过JavaScript创建的事件会立即触发,而不是在单击对象时触发
- 如何改变“;添加到购物车”"添加到愿望列表”&"将该产品“;单击时按钮边框颜色
- 删除值=";评论"只要从输入框中单击它
- jQuery IE 9在替换"tbody"时崩溃;值,单击其中的元素后
- CSS、HTML和Javascript:;正在加载"微调器不'无法使用单击上的链接
- 完成注册表格后,我如何显示警报'你完成了.单击"确定"登录'然后当用户单击"
- "悬停”;在jQuery插件函数中不起作用,鼠标悬停并单击即可