Я пытаюсь создать пользовательскую подсказку, привязывая обработчики событий hover к элементам с атрибутом title
.jQuery события на динамических элементах не работают
Код работает с элементами при загрузке страницы, но когда я пытаюсь включить динамические элементы, всплывающая подсказка не исчезает, когда моя мышь покидает целевой элемент.
Показать подсказку
Urb.showTooltip = function() {
var $element = $(this);
var $tooltip = $element.data('tooltip');
var $tip = $element.attr('title');
console.log('show');
if(!$tooltip) {
// create a tooltip element
$tooltip = $('<div />');
$tooltip.addClass('tooltip');
$tooltip.text($tip);
Urb.$body.append($tooltip);
// position the tooltip
Urb.positionTooltip($tooltip, $element);
$element.data('tooltip', $tooltip);
// activate custom tooltip and deactivate browser tooltip
$tooltip.addClass('active');
$element.attr('tooltip', $tip);
$element.removeAttr('title');
} else {
// position and activate custom tooltip
Urb.positionTooltip($tooltip, $element);
$tooltip.addClass('active');
}
};
Скрыть подсказку
Urb.hideTooltip = function() {
var $element = $(this);
var $tooltip = $element.data('tooltip');
console.log('hide');
if($tooltip){
$tooltip.removeClass('active');
}
};
Примечание: Urb
только глобальный объект, который я создал в качестве имен для моего проекта.
Итак, ничего сумасшедшего там не происходит. Изначально я прикрепил логику подсказки к .hover()
функции JQuery в:
$('[title]').hover(Urb.showTooltip, Urb.hideTooltip);
Это работало просто отлично, но теперь, когда я пытаюсь прикрепить события к динамическим элементам, то Urb.hideTooltip
не вызывалось на всех, как это Безразлично» t даже зарегистрировать «скрыть» на моей консоли.
Urb.$body.on('mouseover', '[title]', Urb.showTooltip);
Urb.$body.on('mouseleave', '[title]', Urb.hideTooltip);
Примечание: Urb.$body
является ссылка на $('body')
Почему не функция hideTooltip
дозвонились? Что мне не хватает?
Вы получаете «шоу» в консоли для динамических элементов? вы получаете какие-либо ошибки? – EhsanT
Да, я получаю «шоу» в консоли, и всплывающая подсказка делает все как обычно, позиционирует и активирует. У меня нет ошибок. По какой-то причине он просто не срабатывает. – Quantastical
После добавления/добавления динамического содержимого вы инициируете (связываете события наведения) с такими же: '$ ('[title]'). Hover (Urb.showTooltip, Urb.hideTooltip);'? – Philip