独立是说两个div不是子父元素关系的,鼠标悬浮到div1时,div2会显示,div1和div2紧挨着,鼠标移出div1,如果进入div2时不隐藏,如果均不在两个div内时,div2隐藏。之前听说用setTimeout,基础不好,搞了半天没弄好,有没有高手指点下,最好是现成代码。
html结构比如是这样的:
<div style="width:100px; height:100px; background:#CCC;"></div>
<div style="width:150px; height:150px; background:#F90;"></div>
html结构比如是这样的:
<div style="width:100px; height:100px; background:#CCC;"></div>
<div style="width:150px; height:150px; background:#F90;"></div>
<div style="width:150px; height:150px; background:#F90;display:none;" id="test2"></div>
<script type="text/javascript">
function bindMouse(){
var _hidediv2;
var _o1=document.getElementById("test1");
var _o2=document.getElementById("test2");
_o1.onmousemove=function(){
_o2.style.display="block";
};
_o1.onmouseout=function(){
_hidediv2=setTimeout(function(){_o2.style.display="none";},500);
};
_o2.onmousemove=function(){
clearTimeout(_hidediv2);
this.style.display="block";
};
_o2.onmouseout=function(){
this.style.display="none";
}
}
bindMouse();
</script>
<div style="width:150px; height:150px; background:#F90; display:none;" id="test2" class="containerDiv"></div>
<script type="text/javascript">
//显示函数
ulistShowFun = function(hoverobj,showobj){
//定位
var hoverid = hoverobj.attr("attr");
var X = hoverobj.offset().left;
//alert(X);
var Y = hoverobj.offset().top + hoverobj.outerHeight();
//目标id
var anchorid = null;
var tar = null;
showobj.each(function(){
anchorid = $(this).attr("attr");
if(anchorid == hoverid){
//$(this).css({"left":X,"top":Y}).fadeIn("fast");
$(this).css({"left":X,"top":Y});
tar = $(this);
}
});
//每次都是计算页面位置返回对象
return tar;
}
var st;
$(".containerDiv").hover(function(){
clearTimeout(st);
toggleone.fadeIn("fast");
},
function(){
toggleone.fadeOut("fast");
});
$(".ulist").hover(function(){
toggleone = ulistShowFun($(this),$(".containerDiv"));
//显示返回对象
toggleone.fadeIn("fast");
},
function(){
st = setTimeout(function(){
toggleone.fadeOut("fast");
},500);
});
</script>
我本地测试的jquery库是:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
而第一个问题还是不能理解,为什么不要延迟还是能实现,不会先隐藏吗