У меня есть список почтовых индексов, в каждом из которых есть флажок рядом с ними. Когда пользователь проверяет или отменяет печать ZIP, я перерисовываю карту, на которой нарисованы полигоны ZIP. Вместо того, чтобы сообщать карте перерисовывать каждый раз, когда нажимается класс «polyZIP», я хотел бы сделать задержку, когда карта будет нарисована через 1 секунду после клика ... но есть та часть, которую я не уверен в , Если пользователь идет вниз по списку и быстро проверяет/отменяет почтовые индексы, я бы хотел, чтобы каждый щелчок перезапускал таймер 1 секунды, чтобы карта была перерисована только после того, как щелчок остановился хотя бы на секунду.Можно ли перезагрузить клик на новый клик
Я создал (очень уродливый) тест на http://jsfiddle.net/a2f1ydyh/. Вы можете увидеть на скрипке, что если вы быстро нажмете кнопку «Пуск», в конечном итоге область результатов будет подсчитывать каждый клик. Мне бы хотелось, чтобы в любом случае любой щелчок перезапустил счетчик.
Вот уродливый код:
<script>
var counter = 0;
var timeout = "";
$(function() {
$("#go").click(function() {
timeout = setTimeout(function() { actionFunction(); }, 3000);
});
});
function actionFunction()
{
counter++;
var results = $("#results").html() + "<br />" + counter;
$("#results").html(results);
clearTimeout(timeout);
}
</script>
<input id="go" type="button" value="CLICK ME" /><br /><br />
<div id="results"></div>
Похоже, вы просто должны переместить 'clearTimeout (тайм-аут)' для начала самой функции мыши. – Shikkediel
Я попытался переместить его после таймаута = setTimeout ... line, но потом он вообще не работал ... я переместил его после «actionFunction()»; и он работал так же, как и в функции actionFunction. – Brds
Вы пробовали его как первую строку кода внутри обработчика кликов? Тайм-аут сам по себе должен быть написан немного короче: 'timeout = setTimeout (actionFunction, 3000);'. – Shikkediel