#jquery #cluetip
#jquery #подсказка
Вопрос:
У меня есть подсказка, для которой установлено значение sticky и открывается при нажатии на ссылку. Я также установил кнопку закрытия в подсказке, и все это отлично работает. Я хочу закрыть подсказку, если кто-то нажмет за пределами подсказки в дополнение к текущей кнопке закрытия. Я ищу решение при наведении курсора мыши, просто закрывается по щелчку за пределами подсказки.
Ответ №1:
Вот как я это сделал:
onShow: function() {
// close cluetip when users click outside of it
$(document).click(function(e) {
var isInClueTip = $(e.target).closest('#cluetip');
if (isInClueTip.length === 0) {
$('.cluetip-default').hide();
}
})
},
Ответ №2:
Согласно часто задаваемым вопросам, существует метод API, позволяющий запускать закрытие:
Новое по состоянию на clueTip 1.0.3: как мне программно закрыть (скрыть) подсказку? Если вы хотите вызвать закрытие подсказки на основе какого-либо другого взаимодействия, вы можете использовать следующий код:
$(document).trigger('hideCluetip');
Итак, я думаю, вы могли бы сделать что-то вроде этого:
$('#myCluetip').cluetip({
onShow: function() {
$(document).one('mousedown',function() {
$(document).trigger('hideCluetip');
})
});
});
Это работает путем привязки одноразового обработчика событий для события mousedown к телу документа, который затем запускает событие, которое, по словам разработчиков Cluetip, скроет открытые подсказки. Использование одноразового обработчика событий означает, что вы не отправляете триггер hideCluetip каждый раз, когда кто-то нажимает на что-то.
Комментарии:
1. В итоге я воспользовался этой концепцией использования hideClueTip, но связывал и развязывал события для наведения курсора мыши с помощью крючков OnShow и onHide в зависимости от того, был ли щелчок в подсказке или нет (я решил закрыть подсказку при щелчке за пределами подсказки).
2. @mornos — вы можете опубликовать свое решение?
Ответ №3:
Решение Stony у меня не сработало.
Я использовал решение @ Gary Green, и оно работает нормально, но это все еще не точное решение «закрыть при наведении курсора мыши», которое я хотел.
Наконец, я выяснил, что сама подсказка предоставляет способ сделать это.
Просто установите значение «mouseOutClose: false», вот так:
$("#myForm :input").cluetip(
{
sticky: true,
closePosition: 'title',
arrows: true,
mouseOutClose: true
}
);
Комментарии:
1. просто для добавления вам нужно добавить опцию sticky, чтобы mouseOutClose работал.
Ответ №4:
Было бы полезно просмотреть ваш код, но в любом случае вы можете сделать что-то в этом роде;
$(document).click(function(e) {
if (!$(e.target).hasClass('cluetip'))
{
// Close the cluetip here.
}
});