JQuery控件更新未发生
我有一个脚本,它禁用按钮输入控件,清空一个表体,然后在AJAX调用后重新填充它。这一切都很好,但有时表中有很多行,因此浏览器IE需要一段时间清空并重新填充。奇怪的是,当行被清空时,按钮似乎仍然处于启用状态,但是如果我在被禁用的按钮和被清空的tbody之间放置一个警报,则按钮工作正常,在警报出现之前明显禁用。在资源消耗表清空过程/命令开始之前,有没有办法让按钮更新? 谢谢 MH 代码示例,按要求提供,但并不复杂,所以我最初没有包含它JQuery控件更新未发生,jquery,Jquery,我有一个脚本,它禁用按钮输入控件,清空一个表体,然后在AJAX调用后重新填充它。这一切都很好,但有时表中有很多行,因此浏览器IE需要一段时间清空并重新填充。奇怪的是,当行被清空时,按钮似乎仍然处于启用状态,但是如果我在被禁用的按钮和被清空的tbody之间放置一个警报,则按钮工作正常,在警报出现之前明显禁用。在资源消耗表清空过程/命令开始之前,有没有办法让按钮更新? 谢谢 MH 代码示例,按要求提供,但并不复杂,所以我最初没有包含它 $('#Search').attr('disabled', tr
$('#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中的一个功能影响了控件的呈现和更新方式,这似乎是造成这一问题的原因-此解决方案可能对某些人有效,但实际上,由于其他因素,它对我无效,但这是另一个问题,我不得不忍受这种怪癖——谢谢你的建议