在哈希更改或弹出状态上触发一次功能



我有这个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*/ ));
});

相关内容

  • 没有找到相关文章

最新更新