Приветствия,
Я пытаюсь сделать простой DIVE / FADE DIV с текстом для каждой кнопки на панели навигации, используя jQuery, и я сталкиваюсь с некоторыми проблемами.Вот скриншот того, что я пытаюсь сделать:
В основном, когда пользователь наводит курсор на элемент на панели навигации, под навигацией появляется div с текстом, связаннымна эту кнопку.Разметка, которую я придумала до сих пор, ужасна, и я знаю, что это неправильный путь, я также попытался использовать массив и заполнить информационный div текстом из атрибута title навигационной кнопки - последний работал отлично, нозатем также появляется заголовок.
Помимо того, что он слишком сложный, он работает ... до определенного момента.Если пользователь быстро наводит указатель мыши на панель навигации и выходит из нее, это вызывает включение и выключение всего объекта (без использования: hidden и: visible) или не отображается, если используются: hidden и: visible.
Вот текущая разметка:
CSS для информации DIV
#header-info-text {
width: 480px;
text-align: right;
float: right;
margin-right: 20px;
padding-right: 25px;
background: url('/images/info-arrow.png') top right no-repeat transparent scroll;
color: #fff;
display: none;
}
HTML для навигации
<div id="navBar">
<ul>
<li class="nav-first nav-active"><a href="#">Home</a></li>
<li id="navAbout"><a href="#">About</a></li>
<li id="navPort"><a href="#">Portfolio</a></li>
<li id="navServ"><a href="#">Services</a></li>
<li id="navBlog"><a href="#">Blog</a></li>
<li id="navContact" class="nav-last"><a href="#">Contact</a></li>
</ul>
</div>
<div id="header-infoDIV">
<span id="header-info-text"></span>
</div>
Javascript
$("#navBar ul li").hover(function() {
var text;
var id = $(this).attr('id');
if (id == 'navAbout') {
text = 'Learn more ..';
} else if (id == 'navPort') {
text = 'View our recent work and ongoing projects';
} else if (id == 'navServ') {
text = 'Learn about our services';
} else if (id == 'navBlog') {
text = 'View the our Blog';
} else if (id == 'navContact') {
text = 'We\'re looking forward to working with you!';
} else {
text = '';
}
$("#header-info-text").text(text);
$("#header-info-text:hidden").fadeIn('slow');
});
$("#navBar ul").hover(function() {
$("#header-info-text:hidden").fadeIn('slow');
}, function() {
$("#header-info-text:visible").delay(500).fadeOut('slow');
});
Каков наилучший способ решения таких проблем?По сути, я хочу добавить DIV информационного текста, изменить его текст, когда пользователь переходит к другой кнопке, и скрыть его, когда он выходит из навигационной панели.
Спасибо!
РЕШЕНИЕ (спасибо jmans)
$("#navBar ul").hover(function() {
$("#header-info-text").stop(true,true).fadeIn('slow');
}, function() {
$("#header-info-text").stop(true,true).delay(500).fadeOut('slow');
});
ОБНОВЛЕНИЕ Благодаря предложению mVChr код был сокращен до нескольких строк.В сочетании с предложением, предоставленным jmans, он делает то, что я хотел:
$("#navBar ul li a").hover(function() {
var text = $(this).attr('rel');
$("#header-info-text").text(text);
$("#header-info-text").stop(true,true).fadeIn('slow');
},
function() {
$("#header-info-text").stop(true,true).delay(500).fadeOut('slow');
});