我有一个函数,可以调整页面上的元素宽度/高度。此功能由自定义dimensionchange
事件触发。
我
$(window).trigger("dimensionchange")
每当我通过AJAX加载内容或更改页面时(我正在使用jquery mobile
)。
我的问题是在某些页面上,触发了一堆AJAX请求(例如搜索页,Ajax加载标准和Intial结果),因此我最终遇到了几个"dimensionchange"
事件,它们都触发了我的布局更新功能。这会大大减慢页面的速度,而不是必需的,因为我只需要捕获最后一个dimensionchange
然后更新布局。
问题:
有没有办法捕获事件发生随机量的事件的最后一次事件?我唯一能想到的是在每个事件中设置超时,如果... 500ms中没有其他事件...触发页面更新。但这看起来很尴尬,所以我很好奇知道是否有更好的方法?
感谢您的帮助!
您要使用jQuery的全局ajax事件处理器 ajaxStart()
和 ajaxStop()
方法。
还有另一篇有关使用 ajaxstop和ajaxstart 的文章。您需要知道的主要内容是,当第一个Ajax查询开始以及最后一个结束时,可以通知您。您可以设置这样的标志:
$(document).ready(function() {
var ajaxBusy = false;
$(document).ajaxStart( function() {
ajaxBusy = true;
}).ajaxStop( function() {
ajaxBusy = false;
});
});