【发布时间】:2013-04-13 05:51:08
【问题描述】:
我为响应式网站创建了一个移动下拉菜单,当您点击某个元素时,它实质上会显示一个隐藏的无序列表。它工作得很好,除了我无法让 blur() 函数工作,因此当用户单击页面上除菜单内部以外的任何位置时,它会隐藏菜单。这是一个代码笔:http://codepen.io/trevanhetzel/pen/wIrkH
我的 javascript 看起来像这样:
$(function() {
var pull = $('#pull');
menu = $('header ul');
$(pull).on('click', function(e) {
e.preventDefault();
$('.close-menu').toggle();
$('.mobi-nav span').toggle();
menu.slideToggle(250);
});
$(menu).blur(function() {
$(this).slideToggle();
});
});
我过去一直在与 blur() 作斗争,所以我真的很想一劳永逸地弄清楚它是如何工作的,以及我是否在正确的上下文中使用它。谢谢!
【问题讨论】:
-
模糊只发生在可以获得焦点的元素上,例如输入元素。
-
这就是我的问题:)。当您“单击关闭”时,是否还有其他类似的功能适用于常规块元素?
-
$(document).on('click',function(e){ if ( $(e.target).closest('header').length == 0 && e.target.nodeName != 'HEADER' ) $(menu).slideToggle() });还有很多其他方法。您可以使用该解决方案。它处理对文档的每次点击并检查他的目标。 -
天哪,这太快了!我只是在看stackoverflow.com/questions/1259716/how-to-blur-the-div-element 并试图弄清楚如何实现类似的东西,结果你一头雾水。将其发布为答案!谢谢:)
标签: javascript jquery blur