我设置了一个完美的jquery下拉菜单。当用户滚动链接时,它会下降。问题是,当用户滚动下拉菜单的内容区域时,它会向上滑动。我需要设置代码,以便当用户的光标仍在其上时,滑动框保持在向下位置。
这是我的HTML:
<ul id="tabnav">
<li class="tab2"><a href="index2.html" class="btn-slide">My Leases</a></li>
</ul>
<div id="leases">
<!-- slide down content here -->
</div>
JS触发器:
<script type="text/javascript">
$(document).ready(function(){
$(".btn-slide").hover(function(){
$("#leases").slideToggle("medium");
$(this).toggleClass("active");
return false;
});
});
</script>
有什么想法吗?
编辑:以下是相关网页的链接:http://designvillain.com/testbed/600/601.html
答案 0 :(得分:2)
.hover()绑定两个事件,mouseenter和mouseleave。
我会改为使用.btn-slide上的mouseenter()和.leases上的mouseleave()
$(function()
{
$(".btn-slide").mouseenter(function(){
$("#leases").slideToggle("medium");
$(this).toggleClass("active");
});
$("#leases").mouseleave(function(){
$(".btn-slide").toggleClass("active");
$(this).slideToggle("medium");
});
});
编辑:注意,如果鼠标从不进入#leases div,它将无法获得mouseleave,您可能需要考虑这一点。
EDIT2:修复我的不良手指输入功能
答案 1 :(得分:2)
我不确定这是不是你想要的,但我会把它放在这里。在向上滑动#leases
之前等待500毫秒,并且仅在适当时
var isMousedOver;
var hideDropdown = function(a) {
setTimeout( function() {
if (isMousedOver) return;
$("#leases").slideUp("medium");
$(a).removeClass("active");
}, 500);
}
$(".btn-slide").hover(
function(){
$("#leases").stop(true,true).slideDown("medium");
isMousedOver = true;
$(".btn-slide").removeClass("active");
$(this).addClass("active");
var that = this;
$("#leases").data("mouseoutfn", function() { hideDropdown(that) });
},
function(){
isMousedOver = false;
hideDropdown(this);
}
);
$("#leases").hover(
function() {
isMousedOver = true;
},
function() {
isMousedOver = false;
$(this).data("mouseoutfn")();
}
);
答案 2 :(得分:0)
我认为div在页面加载时是隐藏的,你希望它显示在你将鼠标悬停在链接上时?将切换更改为向下...
$(document).ready(function(){
$("#leases").hide();
$(".btn-slide").hover(function(){
$("#leases").slideDown("medium");
$(this).toggleClass("active");
return false;
});
});
是否需要在某个时候退回?