问题描述
一个按钮(class="myqiehuan"),一个初始隐藏的div(class="qiehuan")需求:1.当鼠标放到(不是点击事件)按钮上时,显示div,当鼠标离开按钮时,隐藏div2.当div被1中的事件触发而显示时,当鼠标在这个div内部时,继续显示这个div,当鼠标离开这个div时,隐藏divJQuery:$(".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内部?比较急,谢谢! 问题补充:pwc_pengwenchao 写道
解决方案
这个我也做过这个功能。$(".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