最好的方式是在每个链接上只触发一个滚动,而不是页面上的所有滚动。请参阅:http://www.4pixels.com/web-design/xweb-design.html目前很明显,页面上的任何'li a‘都会触发我的翻转。我想在每个图像上有单独的翻转,只由它自己触发。希望这是有意义的。
<script type="text/javascript">
$(document).ready(function(){
$(".content #display li a .caption").hide();
$(".content #display li a").mouseenter(function(){
$(".content #display li a .caption").slideDown(400);
});
$(".content #display li a").mouseleave(function(){
$(".content #display li a .caption").slideUp(400);
});
});
</script>
<ul id="display">
<li><a href="/images/websites/PEX-BAFTA_2.jpg" rel="sexylightbox[group1]" title="Caption goes here"><img src="/images/websites/thumbs/PEX-BAFTA_2.jpg" alt="" /><div class ="caption">caption goes here</div></a></li>
</ul>
发布于 2011-04-05 21:56:29
这对你来说应该是有用的。
$('.content #display li a').bind('mouseenter mouseleave',function() {
$('.caption', this).slideToggle(400);
});
你遇到的问题是事件将被触发,然后你使用了选择器。使用此返回触发事件的元素。或多或少。
发布于 2011-04-05 21:57:25
在您的事件处理程序中,尝试使用$(this).find(".caption")。
$(".content #display li a").mouseenter(function(){
$(this).find(".caption").slideDown(400);
});
发布于 2011-04-05 22:06:42
我会使用jquery的delegate来避免多个事件处理程序。
$("#display").delegate('a', 'mouseenter mouseleave', function(){
$(this).find(".caption").slideToggle(400);
});
注:我也可能会使用像hover intent这样的东西,这样当你在屏幕上滑动鼠标经过大量图像时,就不会向用户显示难看的动画堆积。
https://stackoverflow.com/questions/5552966
复制相似问题