Используйте атрибут данных для хранения состояния таймера.Вы можете использовать атрибут данных, чтобы определить, нужно ли его отменить.Вы сохраняете идентификатор тайм-аута в атрибуте данных и по клику проверяете его.
$('#btnDelete').unbind().click(function(){
var btn = $(this); // reference the button that was clicked
if (btn.data("timer")) { // determine if it was already clicked
window.clearTimeout(btn.data("timer")) // cancel the timeout
btn.data("timer", null); // toggle it to not being used
} else {
var time = setTimeout(function() {
btn.data("timer", null); // reset it if you want
/* your code here */
}, 10000)
btn.data("timer", time); // store the timeout id for next click
}
});
, если вы хотите, чтобы он перезапустился, не делайте иначе, и нет необходимости устанавливать для атрибута данных значение null, поскольку вы перезапишете его.
$('#btnDelete').unbind().click(function(){
var btn = $(this);
if (btn.data("timer")) {
window.clearTimeout(btn.data("timer"))
}
var time = setTimeout(function() {
btn.data("timer", null); // reset it if you want
/* your code here */
}, 10000)
btn.data("timer", time);
});
Пример работы на нескольких кнопках
$('.btn-delete').unbind().click(function(){
var btn = $(this); // reference the button that was clicked
if (btn.data("timer")) { // determine if it was already clicked
window.clearTimeout(btn.data("timer")) // cancel the timeout
btn.data("timer", null); // toggle it to not being used
} else {
var time = setTimeout(function() {
btn.data("timer", null); // reset it if you want
btn.text((new Date()).toLocaleString())
}, 3000)
btn.data("timer", time); // store the timeout id for next click
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="btn-delete">Delete 1</button>
<button class="btn-delete">Delete 2</button>
<button class="btn-delete">Delete 3</button>
<button class="btn-delete">Delete 4</button>