Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery在IE6中延迟DOM更新_Jquery_Dom_Internet Explorer 6 - Fatal编程技术网

使用jQuery在IE6中延迟DOM更新

使用jQuery在IE6中延迟DOM更新,jquery,dom,internet-explorer-6,Jquery,Dom,Internet Explorer 6,我正在与IE6中一个荒谬的问题搏斗。我在服务器端呈现一个充满数据的页面,然后在客户端迭代结果(HTML表的行),用每一行上AJAX调用的结果按顺序更新每一行。(我不想使用.each(),不要问…) 在document.ready()块中的所有代码完成之前,IE6不会在客户端显示任何内容。在下面的代码中,您将看到它在没有AJAX db调用的情况下是可复制的:获取一个包含100行的表,当文档准备好时,遍历TR集合并替换每个TD中的文本节点。在jQuery代码完成执行之前,IE6不会显示任何内容 以下

我正在与IE6中一个荒谬的问题搏斗。我在服务器端呈现一个充满数据的页面,然后在客户端迭代结果(HTML表的行),用每一行上AJAX调用的结果按顺序更新每一行。(我不想使用.each(),不要问…)

在document.ready()块中的所有代码完成之前,IE6不会在客户端显示任何内容。在下面的代码中,您将看到它在没有AJAX db调用的情况下是可复制的:获取一个包含100行的表,当文档准备好时,遍历TR集合并替换每个TD中的文本节点。在jQuery代码完成执行之前,IE6不会显示任何内容

以下是测试用例:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<head>
<script src="scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready( function() {     
        var totalRows = $('table tr').size();
        for (var i=0; i<totalRows; i++) {
            var currentRow=$('table tr').eq(i);
            var cellTarget = currentRow.children(0);
            cellTarget.html('and after');
            }

});
</script>
</head>
<body>
<table>
<tr><td>before</td></tr>
<tr><td>before</td></tr>
<tr><td>before</td></tr>
... repeat 97 more times ...
</table>
</body>
</html>

无标题文件
$(文档).ready(函数(){
var totalRows=$('table tr').size();

对于(var i=0;i您是否尝试过将函数保留在顶部,但将其保留在$(document).ready()之外,并将其设置为自己的函数。然后在文档底部放置一个调用该函数的脚本标记


另外,另一种可能是将defer=“true”放在脚本标记中。

我现在没有IE6的副本可供测试,但是如果您使用jQuery的。每个功能呢

JS代码段可以归结为:

$(document).ready( function() {
    $('table tr').each(function(i){
        // In this function, 'this' is bound to your table row
        // The argument i receives the same value as your original loop, 
        // although it's not necessary in this style.
        // Also, 'this' is actually bound to the DOM element, 
        // NOT a jQuery object, so if you want to use jQuery stuff,
        // you gotta $(wrap) it.
        $(this).html('and after');
        // Alternately, you could just this.innerHTML = 'and after';
    });
});

我还把它放在JS-Bin上,你可以在现场查看或在现场编辑它-你所做的任何编辑和保存都不会改变原始内容,所以请调整(例如添加该警报,我不喜欢尝试使用100个表行;)

这两种策略都不起作用。不过,想法不错,我忘记了延迟。与我在IE6中的示例相同的行为——在整个脚本块完成执行之前,结果不会呈现。我们在IE8中观察到了标准模式和兼容模式下的相同行为。嗯,基于-这没有直接关系,但讨论了IE如何存在问题在处理大型DOM集合时,我不禁怀疑这是否仅仅是IE而已。:/尽管如此,我也有一次在更改后某些元素没有正确地重新呈现。这是一个非常糟糕的问题,但我发现在父节点上使用jQuery会导致刷新。有没有代码。我知道这是一个非常糟糕的问题,但它曾经为我带来了一次刷新。愚蠢的IE在IE8中部分起作用,而在IE6中根本不起作用。有一个类似的问题(更改后的Hight不会更新),但不使用jQuery,只使用javascript似乎可以解决它。targetElementNode.style['height']=someNumber,而不是$('#targetElementNodeID').css('height',someNumber)