Я пытаюсь сделать функциональность, когда пользователь наводится на изображение, а затем появляется элемент привязки. Затем пользователь может щелкнуть тег привязки, чтобы перейти по ссылке. Когда пользователь не наводил изображение, он исчезает.
Создание метки привязки появляется, когда я нахожусь над изображением, прекрасно работает, но когда я наводил курсор на привязывающий тег, он исчезает. Причина в том, что, когда появляется якорный элемент, мышь больше не витает над изображением напрямую. Суоо в принципе, моя тактика не работает. Может ли кто-нибудь предложить метод?
Здесь мой метод ниже: http://jsfiddle.net/5z4RL/
HTML//У меня есть div с неупорядоченным списком. Каждый li имеет img и привязку
<div id="img_container">
<ul>
<li>
<img src="img/first.jpg" width="260px" height="260px">
<a href="#">Click Here To Visit </a>
</li>
<li>
<img src="img/second.jpg" width="260px" height="260px">
<a href="#"> Click Here To Visit </a>
</li>
<li>
<img src="img/third.jpg" width="260px" height="260px">
<a href="#"> Click Here To Visit </a>
</li>
</ul>
</div>
Jquery
$(document).ready(function(){
$("#img_container img").hover(
function(){
$(this).next().css("visibility","visible");
}, function(){
$(this).next().css("visibility","hidden");
}
);
});// end of ready
Просто используйте CSS для чего-то простого:
#img_container li a {
/* current styles */
visibility: hidden;
}
#img_container li:hover a {
visibility: visible;
}
Это скрывает элементы по умолчанию затем показывает их при наведении мыши на родительском a
li
.
Здесь он работает: http://jsfiddle.net/sPL73/
Если вы хотите, чтобы a
был видимым, если вместо этого наведите курсор мыши на изображение, используйте:
#img_container li a {
/* current styles */
visibility: hidden;
}
#img_container img:hover + a, #img_container li a:hover {
visibility: visible;
}
При этом используется CSS3 селектор смежно родственный, чтобы выбрать рядом с изображением, которое будучи завис над. a
Вот демо: http://jsfiddle.net/4wcQr/
Вместо этого вы можете использовать LI
:
$("#img_container li").hover(
function(){
$(this).find('a').css("visibility","visible");
}, function(){
$(this).find('a').css("visibility","hidden");
}
);
Вы можете присоединить обработчик hover
на <li>
, как уже сказано, или, альтернативно, прикрепить его как к <img>
и к <a>
.
Это может быть полезно, если вы не хотите полагаться на границы элемента <li>
.
Здесь скрипка: http://jsfiddle.net/5z4RL/3/
$(document).ready(function(){
$("#img_container img, #img_container a").hover(
function(){
$(this).parent().find("a").css("visibility","visible");
}, function(){
$(this).parent().find("a").css("visibility","hidden");
}
);
});// end of ready
Привяжите к элементам списка вместо изображения. Затем затухайте тег привязки и выведите соответственно:
$(function(){
$("#img_container li").hover(function () {
$(this).find('a').fadeIn();
}, function () {
$(this).find('a').fadeOut();
});
});
Назначьте событие в свой LI вместо , и используйте .mouseenter()
и .mouseleave
вместо hover()
. Таким образом, пока ваш курсор находится на элементе или любом из его дочерних элементов, событие все еще активно.
hover
- сокращение от mouseenter/mouseleave