1

我有一个功能,可以调整页面上的元素宽度/高度。此功能由自定义dimensionchange事件触发。

我是

$(window).trigger("dimensionchange") 

每当我通过 AJAX 加载内容或更改页面时(我正在使用jquery mobile)。

我的问题是在某些页面上,触发了一堆 Ajax 请求(例如搜索页面,它 ajax 加载条件和初始结果),所以我最终得到了几个"dimensionchange"事件,它们都触发了我的布局更新功能。这会大大减慢页面速度并且没有必要,因为我只需要捕获最后一个dimensionchange然后更新布局。

问题
有没有办法在事件触发随机次数时捕获事件的最后一次发生?我唯一能想到的就是在每个事件发生时设置一个超时,如果在...... 500ms 内没有进一步的事件......触发页面更新。但这似乎很尴尬,所以我很想知道是否有更好的方法?

感谢帮助!

4

1 回答 1

2

您想使用 jQuery 的全局 Ajax 事件处理程序 ajaxStart()ajaxStop()方法。

最近还有一篇关于使用AjaxStop 和 AjaxStart的文章。您需要知道的主要事情是,您可以在第一个 ajax 查询开始时以及最后一个查询结束时收到通知。你可以像这样设置一个标志:

$(document).ready(function() {
    var ajaxBusy = false;

    $(document).ajaxStart( function() { 
        ajaxBusy = true; 
    }).ajaxStop( function() {
        ajaxBusy = false;
    });
});
于 2012-11-04T16:21:51.887 回答