Возможно, без использования хэшей, посмотрите на asual jQuery Address plugin :
Пример здесь .
Обратите внимание, что он будет использовать хэши в IE, для этого нет обходного пути.
Поздно ответьте, но я добавляю его, потому что это - 2019, и это - совершенно достижимое использование симпатичный ES6, никакие сторонние библиотеки, и я нахожу, что большинство очень расчетных ответов является большим и пригнуто со слишком многими переменными.
Изящное решение, взятое от это превосходное сообщение в блоге.
function debounce(callback, wait) {
let timeout;
return (...args) => {
const context = this;
clearTimeout(timeout);
timeout = setTimeout(() => callback.apply(context, args), wait);
};
}
window.addEventListener('keyup', debounce( () => {
// code you would like to run 1000ms after the keyup event has stopped firing
// further keyup events reset the timer, as expected
}, 1000))
Простой и легкий для понимания.
var mySearchTimeout;
$('#ctl00_mainContent_CaseSearch').keyup(function () {
clearTimeout(mySearchTimeout);
var filter = $(this).val();
mySearchTimeout = setTimeout(function () { myAjaxCall(filter); }, 700);
return true;
});
Для передающих параметров к Вашей функции наряду с синтаксисом ES6.
$(document).ready(() => {
let timer = null;
$('.classSelector').keydown(() => {
clearTimeout(timer);
timer = setTimeout(() => foo('params'), 500);
});
});
const foo = (params) => {
console.log(`In foo ${params}`);
}