У меня есть следующая функция. Цель состоит в том, что, когда вы наводите курсор на объект с классом .toolTip
, он регистрирует data-tooltip
из элемента, который вы навешиваете через 3 секунды. Однако, если ваш курсор покидает элемент, он должен отменить setTimeout и не показывать сообщение.setTimeout все еще срабатывает, несмотря на clearTimeout
Сообщения «Тайм-аут» и «Тайм-аут очищены», как и ожидалось, но именованная функция срабатывает в любом случае. Что я делаю не так? не
$(document).on("hover",".toolTip", function() {
var toolTip = $(this);
var toolTipMessage
var hoveringNow = toolTip.attr("data-hovering-now");
if(typeof hoveringNow !== typeof undefined && hoveringNow !== false) {
toolTip.removeAttr('data-hovering-now');
clearTimeout(toolTipMessage);
console.log('Timeout cleared');
}
else {
toolTip.attr('data-hovering-now', true);
toolTipMessage = setTimeout(showToolTip, 3000, toolTip.attr("data-tooltip"));
console.log('Timeout set');
}
});
function showToolTip(message) {
console.log(message);
}
Поместите 'var toolTipMessage' вне обработчика функции' hover', иначе вы переопределите его для каждого события. Я также немного смущен относительно точки атрибута данных hovering-now' для сохранения состояния, почему бы просто не использовать две функции обработчика? Один для mouseenter, а другой для мышиного? –