Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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控件更新未发生_Jquery - Fatal编程技术网

JQuery控件更新未发生

JQuery控件更新未发生,jquery,Jquery,我有一个脚本,它禁用按钮输入控件,清空一个表体,然后在AJAX调用后重新填充它。这一切都很好,但有时表中有很多行,因此浏览器IE需要一段时间清空并重新填充。奇怪的是,当行被清空时,按钮似乎仍然处于启用状态,但是如果我在被禁用的按钮和被清空的tbody之间放置一个警报,则按钮工作正常,在警报出现之前明显禁用。在资源消耗表清空过程/命令开始之前,有没有办法让按钮更新? 谢谢 MH 代码示例,按要求提供,但并不复杂,所以我最初没有包含它 $('#Search').attr('disabled', tr

我有一个脚本,它禁用按钮输入控件,清空一个表体,然后在AJAX调用后重新填充它。这一切都很好,但有时表中有很多行,因此浏览器IE需要一段时间清空并重新填充。奇怪的是,当行被清空时,按钮似乎仍然处于启用状态,但是如果我在被禁用的按钮和被清空的tbody之间放置一个警报,则按钮工作正常,在警报出现之前明显禁用。在资源消耗表清空过程/命令开始之前,有没有办法让按钮更新? 谢谢 MH

代码示例,按要求提供,但并不复杂,所以我最初没有包含它

$('#Search').attr('disabled', true);
$('#StatusSpan').empty();
$('#DisplayTBody').empty();
然后我执行我的AJAX调用,重新启用按钮并重新填充表——如果您将该代码附加到按钮并弹出一个1500行的表

正如我所提到的,通常这非常快,也不是问题,但是如果表中有1500行,则需要一段时间才能清除,但“搜索”按钮不会在屏幕上更新,但是如果我在.attr“disabled”行后放置警报,则当警报框打开时,按钮会明显更新,但是如果没有这个按钮,直到表格清除(大约3或4秒,有1500行)之后,按钮才会明显禁用,它只是保持在向下/按下中间的状态。我对浏览器呈现表更改所花费的时间没有问题,这只是生活,但我需要用户看到可见的反馈,以便他们知道搜索已经开始

---进一步编辑 这里有一些代码可以重现这个问题

<input id="Search" type="button" value="Search" />
<table>
    <tbody id="DisplayTBody">
        <tr>
            <td>Data</td><td>Data</td><td>Data</td><td>Data</td>
        </tr>
    </tbody>
</table>
复制表行,直到有1500行,然后这就是脚本

<script type="text/javascript">
    $(document).ready(function() {
        $('#Search').click(function() {
            $('#Search').attr('disabled', true);
            //alert('l');
            $('#DisplayTBody').empty();
        });
    });
</script>
如果取消对警报的注释,您应该能够看到问题。这发生在IE8和FF中,但我的主要问题是IE8。在该示例中,由于表格非常简单,因此清除行不需要很长时间,但对于更复杂的表格,则需要更长的时间,因此问题更为明显。

也许这样就可以了

$('#Search').attr('disabled', true);
setTimeout( function(){
    $('#StatusSpan').empty();
    $('#DisplayTBody').empty();
}, 100); 

来点代码看看你在做什么好吗?Thx-在空函数之后有一大堆代码,这些代码与重新创建这个函数没有任何关系,也必须包含在setTimeout函数中-如果我们反复实例化这个函数,这会导致内存问题吗?我猜fn会是暂时的创造然后毁灭?坦白说我不知道但我不这么认为。你甚至可以调用一个与匿名函数相反的简单函数,如果它让你感觉更好的话:你有没有同时想出一个更好的解决方案?我没有忘记这一点,但是有其他的优先事项AARRGGHH-很快会回来再次回顾。我重新回顾了这一点,IE中的一个功能影响了控件的呈现和更新方式,这似乎是造成这一问题的原因-此解决方案可能对某些人有效,但实际上,由于其他因素,它对我无效,但这是另一个问题,我不得不忍受这种怪癖——谢谢你的建议