这里有两个元素在起作用:
$('#myInput') // an input field for search
$('#myList') // a list to display search results
我希望在输入框失去焦点后隐藏列表,如下所示:
$('#myInput').blur(function() {
$('#myList').hide();
});
这个方法运行良好,但是当点击列表项时会出现问题,因为模糊事件会在单击被注册之前触发并隐藏列表。目标是使列表在点击列表的任何部分时保持可见,即使这将导致输入模糊。
我该如何做到这一点?谢谢!
focus
方法,并将blur
代码放置在您的列表click
事件中。 - The Scrum Meistervar retainFocus = { hide: fn()..., keep: false, onblur: function() { retainFocus.keep = false; setTimeout(retainFocus.hide, 200); }, onfocus: function() { retainFocus.keep = true; } }
,然后$.each([$myList, $myInput], function(i,o) { o.blur(retainFocus.onblur).focus(retainFocus.onfocus); });
$myInput.blur - drzaus