Задержка перед появлением второго уровня меню
Добровго времени. Имеется меню на сайте, под ним ссылки на разделы каталога (не спрашивайте зачем). Так вот вывод и скрытие подпунктов меню делается по
$('header nav > div > div').hover(
function(e) {$(this).children('.hide').fadeIn()},
function(e) {$(this).children('.hide').fadeOut()}
);
Но в таком случае проходя через меню курсором на ссылки разделов каталога всплываеют подпункты и скрывают эти самые ссылки. Решением вопроса была бы задержка перед появлением подменю со сбросом таймера при mouseleave. Но данный код не работает:
$(document).ready(function(){
var MenuShowTimer;
$('header nav > div > div').hover(
function(e) {
MenuShowTimer=setTimeout($(this).children('.hide').fadeIn(),1000);
},
function(e) {
clearTimeout(MenuShowTimer);
$(this).children('.hide').fadeOut();
}
);
});
|
Цитата:
Как вариант
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
body > div {
float: left;
margin-right: 10px;
}
div > div {
display: none;
}
</style>
<script type="text/javascript">
$(function(){
var MenuShowTimer;
$('a').hover(
function(e) {
MenuShowTimer=setTimeout(
(function (Obj){
return function () {
$(Obj).next().fadeIn();
};
})(this)
,1000)}
,
function(e) {
clearTimeout(MenuShowTimer);
$(this).next().fadeOut();
}
);
});
</script>
</head>
<body>
<div>
<a href='#'>Item 0</a>
<div>Text 0</div>
</div>
<div>
<a href='#'>Item 1</a>
<div>Text 1</div>
</div>
<div>
<a href='#'>Item 2</a>
<div>Text 2</div>
</div>
</body>
</html>
|
Огромное спасибо, ksa!
Как я интуитивно и предполагал, неправильной передается объект в setTimeout. Благодарю вас еще раз! |
ksa, а что делать, если в одном случае нужна 1000 задержка, а в другом 2000 ?
и если например надо передать что-то в условиях, как это сделать? при наведении может fancybox открываться, а может тултип вылазить надо 2 ф-ии держать или может есть смысл без event сделать, а напрямую вызов через mouseover с передачей всех условий? вот только скилла не хватает переделать listener на mouseover ( |
ну и сам же отвечаю:
alert(event.target.getAttribute('data-id'));
data-* это стандарт в HTML5: <a href='/' data-id='123'>lala</a> |
| Часовой пояс GMT +3, время: 02:31. |