Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有一种通用的方法来“关闭”一个下拉菜单(not.blur())?_Javascript_Jquery_Html_Drop Down Menu - Fatal编程技术网

Javascript 是否有一种通用的方法来“关闭”一个下拉菜单(not.blur())?

Javascript 是否有一种通用的方法来“关闭”一个下拉菜单(not.blur())?,javascript,jquery,html,drop-down-menu,Javascript,Jquery,Html,Drop Down Menu,有一个巧妙的技巧,你可以使用下拉菜单 $('#test').click(function(){ $('#test').hide(); setTimeout(function(){ $('#test').show(); },20); });​ 这似乎总是适用于Windows上的Chrome和Firefox。IE在我的实际代码中工作,但当我在IE中测试JSFIDLE代码时,它不工作。在mac电脑上,这不适用于任何浏览器。Mac和Windows的区别在于,在M

有一个巧妙的技巧,你可以使用下拉菜单

$('#test').click(function(){
    $('#test').hide();
    setTimeout(function(){
        $('#test').show();
    },20);
});​
这似乎总是适用于Windows上的Chrome和Firefox。IE在我的实际代码中工作,但当我在IE中测试JSFIDLE代码时,它不工作。在mac电脑上,这不适用于任何浏览器。Mac和Windows的区别在于,在Mac上,选项是在它们自己的元素中打开的——检查页面时不会显示任何新元素。因此,下拉栏会隐藏并返回,但带有选项的新菜单不被视为$'test'的一部分,因此它们不会隐藏。在Windows中,带有选项的菜单被视为$'test'的一部分,因此当您隐藏该菜单时,该菜单将随之隐藏

所以问题是,有没有一种方法可以关闭任何浏览器和操作系统上的下拉菜单? 更新


我不是说用模糊,这就是原因。我有一些模拟下拉菜单的代码,但实际上是。所以我只有一个普通可见的元素,当我点击它时,我会用一个绝对定位的元素替换它。选择选项后,该选项消失,元素返回。这方面的任何帮助都会很好。

我还没有测试过它,但我想,你可以

$('select').blur();
或者把注意力放在别的事情上,来结束它

更新-哦,你看,第一个评论员有小提琴

如何使用.blur点击。。不幸的是,我现在不能全部测试

$('select').click(function(){ 
   $(this).blur(); 
});
演示:

选择并不适用于此,但是您可以创建一些其他标记来伪造选择布局

HTML 选择1 选择2 选择3 ​

JS

CSS


这是一个例子。您可以根据需要设置标记的样式。

如果将事件从单击更改为焦点,可能会有帮助:

$("#test").focus(function () {
    // Your original code

    // or: this.blur();
    // just DON'T call this.focus()
});

$'test'怎么样?单击函数{$this.blur;};->Try:var t=this,p=t.parentNode,n=t.nextSibling;然后在回调中:p.insertBeforet,n;正如您所知,Webkits浏览器在选择和单击事件方面存在问题。我很确定其他浏览器也会出现这种情况。下面是一个演示:我在设置超时之前添加了一个.removeChild,以防它提供更好的结果。与其单击,不如使用聚焦?我不是说在选择项目后关闭下拉菜单。我的意思是立即关闭它,这样用户就不能选择一个项目。@Aust你到底为什么要这样做?如果这就是目标,为什么不在选择标记中添加一个禁用的属性呢?为什么要给用户打开和关闭菜单的奇怪体验?@Phrogz,@redlena-哈哈,我所做的是,当用户打开下拉菜单时,它会隐藏下拉菜单,并显示一个具有相同选项的列表,而不是绝对定位的列表。它是用于用户界面的。下拉列表比@Aust漂亮得多。在webkit浏览器中,显示下拉选项的方式似乎不同。->即使焦点在下一个元素中,也会显示下拉选项。如果您要使用UI,则可以在提交时进行下拉,而无需使用select和use js填充表单元素。我认为scion.ca的形式中有类似的东西
ul {
   list-style:none  ;
   border : solid 1px Gray;    
   width: 80px;
   height: 20px;
   overflow:hidden;
   cursor:pointer;
}
ul.open {
 height: 60px;   
}
$("#test").focus(function () {
    // Your original code

    // or: this.blur();
    // just DON'T call this.focus()
});