在mouseover上显示元素在mouseleave上隐藏
Show element on mouseover hide on mouseleave
我在使用此功能时遇到问题。我希望#login在鼠标悬停在#pink上后显示,并在悬停在#login上时保持可见,但在悬停在#绿色、#黄色、#紫色或#按钮容器外时消失。
我的问题是,当我悬停在#绿色、#黄色和#紫色#登录仍然可见,这是不希望的。
<div id="buttons">
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
<div id="four"></div>
<div id="login"></div>
</div>
<script>
$('#four').mouseover(function () {
$('#login').show();
});
$('#buttons').mouseleave(function () {
$('#login').hide();
});
</script>
jsfiddle
只有通过添加以下行,CSS才能实现这一点:
#login:hover,
#four:hover ~ #login { display:block }
#buttons {
width: 160px;
background: blue;
}
#one {
float: left;
width: 40px;
height: 40px;
background: green;
}
#two {
float: left;
width: 40px;
height: 40px;
background: yellow;
}
#three {
float: left;
width: 40px;
height: 40px;
background: purple;
}
#four {
float: left;
width: 40px;
height: 40px;
background: pink;
}
#login {
height: 100px;
background: orange;
display: none;
}
#login:hover,
#four:hover ~ #login { display:block }
<div id="buttons">
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
<div id="four"></div>
<div id="login"></div>
</div>
使用这样的结构:
<div id="buttons">
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
<div id="four">
<div id="login"></div>
</div>
</div>
然后你就可以实现这样的功能:
$('#four').mouseover(function () {
$('#login').show();
}).mouseleave(function () {
$('#login').hide();
});
请参阅jsfiddle 上的更新代码
$('#four,#login').mouseover(function () {
$('#login').show();
}).mouseleave(function(){
$('#login').hide();
});
您也可以这样尝试:Demo
$('#one,#two,#three').mouseover(function () {
$('#login').hide();
});
您可以使用类似的计时器
jQuery(function($) {
var $target = $('#login');
$('#four').hover(function() {
clearTimeout($target.data('hoverTimer'));
$target.stop(true, true).slideDown(500);
}, function() {
var timer = setTimeout(function() {
$target.stop(true, true).slideUp();
}, 200);
$target.data('hoverTimer', timer);
});
$target.hover(function() {
clearTimeout($(this).data('hoverTimer'));
}, function() {
$(this).stop(true, true).slideUp();
});
});
#buttons {
width: 160px;
background: blue;
}
#one {
float: left;
width: 40px;
height: 40px;
background: green;
}
#two {
float: left;
width: 40px;
height: 40px;
background: yellow;
}
#three {
float: left;
width: 40px;
height: 40px;
background: purple;
}
#four {
float: left;
width: 40px;
height: 40px;
background: pink;
}
#login {
height: 100px;
background: orange;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="buttons">
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
<div id="four"></div>
<div id="login"></div>
</div>
您可以使用css来完成此
<style type="text/css">
#logo {
display:none
}
#pink:hover + #logo, #logo:hover {
display:block;
}
</style>
<div id="pink">pink</div>
<div id="logo">LOGO</div>
这就是您所需要的:Fiddle
<div id="buttons">
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
<div id="four" class="toggle"></div>
<div id="login" class="toggle"></div>
</div>
$('.toggle').mouseover(function () {
$('#login').show();
});
$('.toggle').mouseleave(function () {
$('#login').hide();
});
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 显示5秒后隐藏潜水
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 浮动页脚栏-使用Bootstrap隐藏
- 在jquery中为显示/隐藏设置cookie
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 从var向代码隐藏函数传递值
- Image赢得't隐藏在滚动jQuery上
- 具有rowGrouping的数据表无法隐藏列
- Jquery隐藏未触发
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- 分部隐藏在jquery中不起作用
- 点击后隐藏潜水?(但如果Div是一面旗帜呢?)
- javascript.点击隐藏事件故障
- 禁用(而不是隐藏)浏览器滚动条
- PHP Javascript显示/隐藏按钮不工作
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 在mouseover上显示元素在mouseleave上隐藏