jQuery悬停问题!

时间:2009-11-05 18:11:59

标签: jquery

http://ftp.crashboxcreative.com/ftp/EastsideBaptist/EBC-Final/

我在使用简单的jquery显示/隐藏效果方面遇到了很多麻烦。

当您将鼠标悬停在滑块上时,导航按钮会淡入。同样,它们会在mouseleave上淡出。

问题是,当你将鼠标悬停在一个按钮上时,它们会褪色/淡出!

如何让jQuery忽略鼠标悬停在按钮上?

编辑:只有悬停在#slider上才会触发效果。我正在使用这个插件:http://cssglobe.com/post/5780/easy-slider-17-numeric-navigation-jquery-slider

我认为标记不容易改变......

3 个答案:

答案 0 :(得分:1)

按钮不是滑块的子元素,即使它们位于滑块内:

<div id="slider" style="overflow: hidden; width: 620px; height: 330px;">
    <div id="slider_overlay"></div>
    <ul style="width: 3100px; margin-left: -620px;"></ul>
</div>
<span id="prevBtn" style="display: none;">
    <a href="javascript:void(0);">Previous</a>
</span>
<span id="nextBtn" style="display: none;">

因此,当您的鼠标输入时,它会离开$('#slider'),触发此处指定的out回调:

var buttons = $('#prevBtn,#nextBtn');
var hide = function () { buttons.stop(true, true).fadeOut(); }
var show = function () { buttons.stop(true, true).fadeIn(); }
$("#slider").hover(show, hide);//show/hide buttons 

我建议将上一个和下一个按钮(跨度)移动到滑块div中,这样它们才真正成为DOM中的子项,而不是仅仅显示为子元素。

编辑:我没有意识到prevBtn和NextBtn跨度是由滑块插件生成的。我没有机会重新获得整个插件代码,但看起来你可以通过改变easySlider1.7.js的第94行来摆脱

$(obj).after(html);

$(obj).append(html);

因为那会将它们插入滑块div中。如果这有不良副作用或仍然无效,您可以将其添加到$(document).ready()

$("#prevBtn,#nextBtn").hover(function() { buttons.stop(true, true).show(); });

没有测试,我不确定是否有任何闪烁,但它应该确保当鼠标悬停在按钮上时显示按钮。

答案 1 :(得分:0)

我的理论是当鼠标悬停在按钮上时,mouseout和mouseover事件会一个接一个地被触发。在隐藏和显示功能中粘贴并发出警报,看看是否属实。

答案 2 :(得分:0)

我要采取刺戳并说你的鼠标停止滑块的事件是因为&lt;和&gt;图形位于定义滑块的潜水之外。你试过把那些放在滑块div里吗?

相关问题