还有其他人遇到过这个问题,并得出了满意的解决方案吗?
基本上我有一个非常复杂的Web应用程序,在IE9 Quirks模式下(目前没有可能切换doctype)通过jQuery动态插入的特定类型的元素未能充分展示自己。它参与页面布局,但元素本身不会出现。
有时5秒钟后,有时甚至30秒后,有时甚至更晚,元素最终会神奇地出现。
我已经使用了F12开发工具(有和没有单击“开始调试”)它会显示有问题的元素,并且它不会显示蓝色边框指示符(因为它显然没有渲染没有渲染它的边界出现,这是合乎逻辑的)。
临时运行的解决方法是在嵌套的setTimeout()
链中动态删除元素并将其重新插入。然后我必须重新安装click事件处理程序。
像这样:
if (isQuirksMode()) {
setTimeout(function() {
var parent = jqelement.parent();
var removed = jqelement.remove();
setTimeout(function() {
parent.append(removed);
removed.children('input').click(clickcallback);
},0);
},0);
}
jqpage.append(jqelement);
此代码将强制插入元素,从DOM中删除,然后重新插入,之后它似乎正确显示。
这样做的原因是我尝试添加和删除一个类,希望它会触发重新渲染,但这并没有改变任何行为。
我的问题是,这种行为是否能为任何人敲响任何铃声,你是否能够想出一种更便宜的方式让它表现出来?
答案 0 :(得分:0)
将元素作为字符串一次性注入比将它们单独注入DOM中要快得多。
在字符串中构建 - 使用innerHTML
插入。