我想实现的效果是,当鼠标悬停在mydiv上时edit显示,鼠标离开mydiv时edit隐藏,现在当鼠标放在mydiv时鼠标只要在edit内部移动,edit就不停的闪动,这是为什么呢,任何帮助将不胜感激,代码如下:
html:
<div id="mydiv" style="width:300px;height:200px;border:solid 10px red;margin-left:100px;margin-top:100px;">
</div>
<div id="edit" style="width:180px;height:200px;border:solid 5px blue;position:absolute;display:none;">
</div>
script:
$(function ()
{
$("#mydiv").mouseover(function (e)
{
var o = $(this).offset()
$("#edit").css({ "left": (o.left-5) + "px", "top": (o.top-5) + "px" });
var w = $(this).outerWidth(false);
var h = $(this).outerHeight(false);
$("#edit").css({ width: w+ "px", height: h + "px", border: "solid 5px blue", display: "block" });
})
$("#mydiv").mouseout(function (e)
{
if ($("#edit").css("display") != "none")
{
$("#edit").css("display", "none");
}
})
});
<div id="mydiv" style="display: block">显示</div>
<div id="edit" style="display:none;">隐藏</div>
注意edit的position:absolute属性。
var over = function(){
$("#edit").show();
}
var out = function(){
$("#edit").hide();
}
$("#mydiv").hover(over, out);
给个建议:处理JS时,先不用复杂CSS。
var isShow=false;
$(function ()
{
$("#mydiv").mouseover(function (e)
{
if(!isShow){
var o = $(this).offset()
$("#edit").css({ "left": (o.left-5) + "px", "top": (o.top-5) + "px" });
var w = $(this).outerWidth(false);
var h = $(this).outerHeight(false);
$("#edit").css({ width: w+ "px", height: h + "px", border: "solid 5px blue", display: "block" });
isShow=true;
}
})
$("#mydiv").mouseout(function (e)
{
$("#edit").css("display", "none");
isShow=false;
})
});