Исчезать меню jQuery после задержки - PullRequest
2 голосов
/ 22 сентября 2009

Я работаю над раскрывающимся меню jQuery, которое исчезает, когда вы наводите курсор на элементы верхнего уровня. Я хочу установить его так, чтобы при перемещении мыши меню не исчезало мгновенно. У меня есть этот код:

$(document).ready(function(){
  $('ul#menu > li').hover(
    // mouseover
    function(){
      $(this).find('>ul').fadeIn('fast');
    },
    // mouseout
    function(){
      setTimeout( function(){
        alert('fadeout');
        $(this).find('>ul').fadeOut('fast')
        }, 1000 );
    }  
  );
});

Через секунду появляется предупреждение, но меню не исчезает.

Ответы [ 2 ]

3 голосов
/ 22 сентября 2009

Посмотрите на hoverIntent . Это даст вам больший контроль над поведением событий mouseover / mouseout в конфигурации:

var config = {    
     sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)    
     interval: 200, // number = milliseconds for onMouseOver polling interval    
     timeout: 500, // number = milliseconds delay before onMouseOut    
};

$(document).ready(function(){
  $('ul#menu > li').hoverIntent(
    // mouseover
    function(){
      $(this).find('>ul').fadeIn('fast');
    },
    // mouseout
    function(){
       $(this).find('>ul').fadeOut('fast');
    }  
  );
});
3 голосов
/ 22 сентября 2009

window.setTimeout (), так что это относится к объекту окна.

// mouseout
function(){
  var el=this;
  setTimeout( function(){
    alert('fadeout');
    $(el).find('>ul').fadeOut('fast')
    }, 1000 );
}  
...