Меню Jquery mouseover mouseout с использованием setTimeout

Может ли кто-нибудь помочь мне с этим простым кодом. Я все еще новичок в js и не знаю, что я делаю неправильно. В основном я пытаюсь сделать меню при наведении курсора.

function showQuickLinks() {
//show the menu
}
function hideQuickLinks() {
//hides the menu
}

//button mouseover
$("#quick-links-dd").mouseover(function() { 
 showQuickLinks();
});

var mnuTimeout;

//clears timeout when it rolls over the button
$("#quick-links-dd").mouseover(function () {        
   clearTimeout(mnuTimeout);    
})

//$("#quick-links) - quick links container
//hides the menu when the mouse is not over the container
$("#quick-links").mouseout(function () {
  mnuTimeout = setTimeout("hideQuickLinks()",1000);
});

Наведение мыши работает, но не выполняет код, когда мышь находится за пределами контейнера ссылок.


person Nzo    schedule 16.09.2010    source источник
comment
Прежде всего, не передавайте строку в setTimeout. Да, это законно, но большинство считает это плохой практикой. Вместо этого передайте ссылку на функцию: setTimeout(hideQuickLinks,1000). Обрабатывайте первый аргумент setTimeout точно так же, как вы обрабатываете первый аргумент методов jquery mouseover и mouseout.   -  person slebetman    schedule 16.09.2010


Ответы (2)


Вам не хватает "?

("#quick-links").mouseout(function () {
  mnuTimeout = setTimeout("hideQuickLinks()",1000);
});
person letronje    schedule 16.09.2010

У меня были периодические проблемы с потерянными событиями onmouseout. Мое окончательное решение состояло в том, чтобы добавить события наведения мыши к окружающим элементам, а также отменить всплывающее окно.

person John - Not A Number    schedule 16.09.2010