у вас есть некоторые синтаксические ошибки: function {
должно быть function() {
(то же самое относится к setTimeout(function{
=> setTimeout(function(){
);
Я предлагаю использовать переменную, которая относится к вашей функции времени ожидания. Таким образом, вы можете остановить появление всплывающей подсказки, если пользователь не наведет курсор на элемент хотя бы на одну секунду. :
var timeout;
$("a.btn").hover(
function() {
var tip = $(this).siblings(".tip-wrapper");
timeout = setTimeout(function(){
tip.show();
}, 1000);
},
function() {
// prevent the tooltip from appearing
clearTimeout(timeout);
var tip = $(this).siblings(".tip-wrapper");
tip.hide();
}
);
Кроме того, вы должны спрятать всплывающие подсказки в начале. - живой рабочий образец.
Пока вы уже используете jquery в своем проекте, я предлагаю вам воспользоваться им и использовать вместо него функцию анимации. Таким образом, ваш код становится:
$("a.btn").hover(
function(){
$(this).siblings('.tip-wrapper').fadeIn(1000);
},
function(){
$(this).siblings('.tip-wrapper').stop().hide();// or fadeOut();
}
);
с .: используйте .siblings()
вместо .parent().children()