晚安:我想鼠标悬停在.slide
上显示#panel
,然后点击.close
显示#panel
,谁可以更正我的代码?感谢。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".slide").mouseover(function(){
$("#panel").slideToggle("slow");
});
$(".close").click(function(){
$("#panel").slideToggle("slow");
});
});
</script>
<style type="text/css">
body {
margin: 0 auto;
padding: 0;
width: 1024px;
height:100%;
}
#wrap {position:absolute;bottom:0px;}
#panel {
background: #f60;
width:600px;
height: 200px;
display: none;
}
.slide {
width:600px;
height: 20px;
background-color:#F06;
}
.close{float:right;height:20px;width:20px;background-color:#000;}
</style>
</head>
<body>
<div id="wrap">
<div class="slide"> <div class="close"> </div></div>
<div id="panel">
<!-- some content -->
</div>
</div>
</body>
</html>
答案 0 :(得分:4)
我认为在这种情况下你不应该使用slideToggle
,因为它似乎不会隐藏.slide
和.close
$(".slide").mouseover(function(){
$("#panel").slideDown("slow");
});
$(".close").click(function(){
$("#panel").slideUp("slow");
});
此外,在将.close
div移至#panel
之前,这将永远不会有效,因为.close
是.slide
的孩子,并会触发.slide
当您尝试点击moveover
.close
次事件
<div id="wrap">
<div class="slide"> </div>
<div id="panel">
<div class="close"> </div>
<!-- some content -->
</div>
</div>
答案 1 :(得分:1)
IIRC,当鼠标在元素内移动时,mouseover将继续触发。我相信你的代码会在#panel不断切换时引起大量闪烁。也许你想使用mouseenter事件?
答案 2 :(得分:0)
您的问题是由于div.close
位于div#slide
内,这导致鼠标悬停事件也因为关闭而触发。