JQuery控件更新没有发生

时间:2010-05-04 16:40:32

标签: jquery

我有一个脚本可以禁用按钮输入控件,清空表体,然后(在AJAX调用之后)重新填充它。一切正常但有时表中有很多行,因此浏览器(IE)需要一段时间才能清空并重新填充。奇怪的是,当行被清空时,按钮仍然显示为启用,但是如果我在禁用按钮和清空按钮之间发出警报,则按钮正常工作,在警报出现之前明显禁用。有没有什么办法可以在资源消耗表清空过程/命令开始之前让按钮更新? 谢谢 MH

代码示例,根据要求(但它并不复杂,所以我最初没有包含它)

$('#Search').attr('disabled', true);
$('#StatusSpan').empty();
$('#DisplayTBody').empty();

然后我执行我的AJAX调用,重新启用按钮并重新填充表格 - 如果您将该位代码附加到按钮并弹出1500行表格。

正如我所提到的,通常情况下这很快并且不是问题,但如果表中有1500行需要一段时间才能清除,但“搜索”按钮不会更新屏幕,但是如果我在.attr之后发出警报(“禁用”行,当警报框启动时按钮会明显更新,但如果没有,则按钮在表格清除之后不会明显禁用(大约是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。在该示例中,由于表非常简单,清除行不需要很长时间,但使用更复杂的表需要更长时间,因此问题更加明显。

1 个答案:

答案 0 :(得分:0)

也许会这样做?

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