2013-03-04 3 views
0

Я видел другие подобные вопросы к этому на SO, но ответы были не совсем тем, что я ищу. Моя проблема с приведенным ниже кодом касается переменной скрыть.JQuery Hover Function Timeout

В текущей форме скрыть не будет виден первой функции hover, но я не хочу объявлять ее в более высоком пространстве, потому что она там бесполезна. Плюс, объявляя его в более высокой области, потребуется сделать другую переменную для каждого li.

Что такое решение для хранения этой переменной, содержащей тайм-аут между этими двумя функциями?

$('li').hover(function() { 
    clearTimeout(hide); 
    $('.menu', this).show(); 
}, function() { 
    var menu = $('.menu', this); 
    var hide = setTimeout(function() { 
     menu.hide(); 
    }, 500); 
}); 

ответ

2

Вы можете сохранить значение с .data()

$('li').hover(function() { 
    clearTimeout($(this).data('hide')); 
    $('.menu', this).show(); 
}, function() { 
    var menu = $('.menu', this); 
    $(this).data('hide', setTimeout(function() { 
     menu.hide(); 
    }, 500)); 
}); 
+0

именно то, что я искал, спасибо! –