单击对象时停止 mouseleave
如果我想用鼠标进入一个div,就会显示一个元素,然后当鼠标离开时,元素就会消失。
我在 mouseenter 中有一个单击功能,因此单击时会出现一个下拉菜单。
我希望下拉菜单和元素即使在鼠标离开时也保持活动状态。所以我希望 mouseleaves 在这种情况下不适用,当有点击事件时。用户必须再次单击该元素或页面上的任何位置才能使该元素和下拉菜单消失。
但我想让 mouseleave 函数保持工作状态,这样如果用户鼠标进入 div,该元素就会显示,并且他们可以再次单击它。
我目前有类似的东西,但我只是不知道如何使 mouseleave 在单击时不适用
$(".div").mouseenter(function(){
$(".element",this).show();
$(".element").click(function(){
$(".dropdown").show();
return false;
});
}).mouseleave(function(){
$(".element",this).hide();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div class='div'>
<div class='element' style='display:none;'>
boxed element
</div>
<div class='dropdown' style='display:none;'>
menu
</div>
</div>
If I want to mouseenter a div, an element will show, then when mouseleave, element disappears.
I have a click function inside the mouseenter so theres a drop down menu when clicked.
I want the dropdown menu and the element to stay active even when mouseleaves. So I want mouseleaves to not be applicable in this situation, when there's a click event. User will have to click on the element again or anywhere on the page to make the element and dropdownmenu disappear.
But I want to keep mouseleave function working so if user mouseenters a div, the element will show and they can click on it again.
I currently have something like this, but I just dont know how to make the mouseleave to not be applicable when clicked
$(".div").mouseenter(function(){
$(".element",this).show();
$(".element").click(function(){
$(".dropdown").show();
return false;
});
}).mouseleave(function(){
$(".element",this).hide();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div class='div'>
<div class='element' style='display:none;'>
boxed element
</div>
<div class='dropdown' style='display:none;'>
menu
</div>
</div>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这对我有用
This did the trick for me
您可以设置自定义属性来将项目标记为已单击。 mouseleave 事件处理程序可以在隐藏元素之前检查此自定义属性的值。
即类似:
You can set a custom attribute for marking the item as clicked. The mouseleave event handler can check the value of this custom attribute before hiding the element.
i.e. Something like:
如果您使用 1.7+,您可以使用 jQuery 的新开/关方法,
例如:
Fiddle: http://jsfiddle.net /fSjtm/
可能需要一些调整,但它会给你一个总体想法。
You can use jQuery's new on/off methods for this if your using 1.7+
Something like:
Fiddle: http://jsfiddle.net/fSjtm/
Will probably need some tweeking, but it will give you a general idea.
使用 event.stopPropagation();
这更好,因为您可以在元素上使用链接
use event.stopPropagation();
this is better because you can use links on element
看来您提到的 mouseleave 事件是由 jquery 单击自定义触发的,而不是原始的 mouseEvent。试试这个:
It seems the mouseleave event you refer to, is custom triggered by the jquery click and not an original mouseEvent. Try this: