2015-06-20 19 views
0

我有這樣的jQuery代碼:觸發功能,一旦在任hashchange或popstate

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

我想運行someFunction()如果哈希值發生變化,也該散列被刪除。看起來像'hashchange'不會觸發如果散列簡單地刪除,所以我必須使用popstate。我現在的問題是,這通常會觸發兩次,我該如何避免這種情況?

我只是希望hashchange事件加上散列被刪除的情況。

回答

0

你可以嘗試去抖一點點:

$(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*/)); 
});