У меня есть система уведомлений о тостах, которая отображает уведомление за 10 секунд до исчезновения.Я хочу добавить функцию, которая приостанавливает обратный отсчет для затухания при наведении уведомления и возобновляется, когда больше не зависает.
Я пытаюсь использовать функцию setInterval()
, чтобы сделать это, но я 'Я не уверен, как позже приостановить (очистить) этот интервал.Я знаю, что могу связать setInterval с переменной, но эти уведомления создаются динамически, поэтому я не могу связать их с одной переменной.
В примере ниже я сохраняю setInterval()
в переменной с именем ???
в идеале я бы связал этот интервал, используя элемент jQuery ($(this)
) в качестве переменной, чтобы он всегда был уникальным, и его можно легко очистить, передав тот же элемент jQuery через функцию clearInterval()
.
Есть ли способ сделать это, или я собираюсь построить эту систему совсем неправильно?
// Start notification countdown
$.countDownNotification = function(notification) {
// IMPORTANT: Store the setInterval in a element-specific variable?
var ??? = setInterval( function() {
// Counts down from remaining seconds
var remaining = notification.attr('data-timer') + 1 - 1;
// Stores remaining seconds in data-attribute
notification.attr('data-timer', remaining);
// Remove notification when timer is on 0
if ( remaining == 0 ) {
notification.remove();
}
}, 1000);
}
// Pause on hover
$('.notification').on('mouseenter', function(e) {
// IMPORTANT: Clear the elemnt-specific interval
clearInterval(???);
});
// Resume when hover ends
$('.notification').on('mouseleave', function(e) {
var notification = $(this)
$.countDownNotification(notification);
});