在hashchange或popstate上触发一次函数

时间:2015-06-20 09:31:36

标签: jquery hashchange

我有这个jquery代码:

$(window).on('hashchange popstate', function() {
  someFunction();
});

如果哈希值发生变化,并且哈希值被删除,我想运行someFunction()。好像' hashchange'如果简单地删除哈希,则不会触发,因此我也必须使用popstate。我现在的问题是,这通常是两次触发,我怎么能避免这种情况?

我只想要hashchange事件加上删除哈希的情况。

1 个答案:

答案 0 :(得分:0)

You could try to debounce it a little bit:

$(window).on('hashchange popstate', function() {
    clearTimeout(this._debounced);
    this._debounced = setTimeout(someFunction/*,0*/);
});

To avoid global var:

$(window).on('hashchange popstate', function() {
    clearTimeout($(this).data('debounced'));
    $(this).data('debounced', setTimeout(someFunction/*,0*/ ));
});