一个按钮(class="myqiehuan"),一个初始隐藏的div(class="qiehuan")
需求:
1.当鼠标放到(不是点击事件)按钮上时,显示div,当鼠标离开按钮时,隐藏div
2.当div被1中的事件触发而显示时,当鼠标在这个div内部时,继续显示这个div,当鼠标离开这个div时,隐藏div
JQuery:
$(".qiehuan").hover(function(){//对div的处理
$(this).show();
},function(){
$(this).hide();
});
$(".myqiehuan").hover(function(){//对按钮的处理
$(this).parent().children(".qiehuan").show();
},function(){
$(this).parent().children(".qiehuan").hide();
});
遇到的问题:
这个按钮和div之间可能有一条缝,使得将鼠标从按钮移到显示的div时,上面的代码交替执行,使得div的显示会闪一下,好像是:出了按钮它立即隐藏而进入div时又立即显示,所以会使得这个div跳动一下,如何才能解决这个问题?
当然,如果有别的思路也可以,不一定非要判断出鼠标当前位置是否在这个div内部?
比较急,谢谢!
这个我也做过这个功能。
$(".qiehuan").hover(function(){//对div的处理
${this}.addClass("hover"); // 当鼠标进入这个DIV的时候,给加一个class样式。
$(this).show();
},function(){
${this}.removeClass("hover");// 当鼠标离开这个DIV的时候,给删除一个class样式
$(this).hide();
});
$(".myqiehuan").hover(function(){//对按钮的处理
$(this).parent().children(".qiehuan").show();
},function(){
setTimeout(function(){
var divThis = $(this).parent().children(".qiehuan");
if (!divThis.hasClass('hover'))
{
divThis.hide();
}
}, 100); // 延迟,这个看你多久合适。
});
在写js的时候,应该尽量少用 z-index这个样式,,因为用了以后,为了显示都想设置最大。
这样会搞得无穷大。
这是一个搞JS的强人这么跟我说的,当时他还说了一种解决方法,我忘记是什么了。
你可以试试position
这里的这篇文章,总共总结了三种方法,这三总方法都能判断鼠标是否在DIV之上:
jquery判断鼠标是否在div里的三种方法及具体实例演示