我有这个jquery代码:
$(window).on('hashchange popstate', function() {
someFunction();
});
如果哈希发生变化并且哈希被删除,我想运行 someFunction()。如果简单地删除哈希,似乎"哈希更改"不会触发,因此我也必须使用流行状态。我现在的问题是,这最常被触发两次,我该如何避免呢?
我只想要哈希更改事件以及删除哈希的情况。
你可以尝试去抖动
一下:
$(window).on('hashchange popstate', function() {
clearTimeout(this._debounced);
this._debounced = setTimeout(someFunction/*,0*/);
});
要避免全局变量,请执行以下操作:
$(window).on('hashchange popstate', function() {
clearTimeout($(this).data('debounced'));
$(this).data('debounced', setTimeout(someFunction/*,0*/ ));
});