有一个巧妙的技巧可以用来“关闭”<select>
下拉菜单。 链接
$('#test').click(function(){
$('#test').hide();
setTimeout(function(){
$('#test').show();
},20);
});
这段代码似乎在Windows上的Chrome和Firefox总是可行的。在IE中它在我的实际代码中可以工作,但是在我测试IE中的jsfiddle代码时,它无法工作。并且在Mac上,这对于任何浏览器都不起作用。Mac和Windows之间的区别在于,在Mac上,选项在它们自己的元素中打开(有点 - 检查页面不显示新元素)。因此,下拉条隐藏并重新出现,但是带有选项的新菜单不被认为是 $('#test')
的一部分,因此它们不会隐藏。在Windows中,带有选项的菜单被视为 $('#test')
的一部分,因此当您隐藏它时,菜单也会随之隐藏。
所以问题是,是否有一种方法可以在任何浏览器和任何操作系统上“关闭”<select>
下拉菜单?
更新
我不是指使用.blur()
这就是为什么。我有一些代码来模拟一个下拉菜单,但实际上是<select multiple>
。因此,我只有一个正常的<select>
可见,当我单击它时,我将其替换为绝对定位的<select multiple>
元素。选择选项之后,这个元素消失了,<select>
元素回来了。任何关于此的帮助都将是很棒的。
$('#test').click(function(){ $(this).blur(); });
-> http://jsfiddle.net/vqA3M/7/ - Selvakumar Arumugamvar t = this, p = t.parentNode, n = t.nextSibling;
然后在回调函数中使用p.insertBefore(t, n);
- I Hate LazysetTimeout
之前添加了.removeChild()
,以防它提供更好的结果。 - I Hate Lazyfocus
而不是click
? - Ian