【问题标题】:Show select dropdown in jQuery? [duplicate]在jQuery中显示选择下拉菜单? [复制]
【发布时间】:2010-12-16 03:00:06
【问题描述】:

可能重复:
How can you programmatically tell an HTML SELECT to drop down (for example, due to mouseover)?

是否可以使用 jQuery 使选择元素上的下拉菜单可见?

我尝试使用$('#dropdown').click();,但没有效果。

【问题讨论】:

标签: javascript jquery select drop-down-menu


【解决方案1】:

这是不可能的。您只能实现自己的选择框,但这不利于可用性。

另一种方法是以编程方式更改选择框的大小属性,但这并不是您真正想要的。

我建议考虑一下您为什么需要这个以及是否会有更好的软件模式?

【讨论】:

  • 现在有可能 - 只需 fireEvent mousedown - 在这里解决:stackoverflow.com/questions/10453393/…
  • 我只在 Chrome 中工作。 IE8 或 FF 不起作用;所以它仍然不可能以浏览器友好的方式。
【解决方案2】:

不 - 您无法执行此操作。当用户单击它时,它与处于按下状态的按钮大致相同 - 用户设置值的“临时”操作。你可以focus 给它,但仅此而已。

如果你真的想要模拟这个,你可以玩一些 CSS。例如,您可以创建一个看起来类似于下拉列表的列表,并根据用户点击的内容设置下拉值 - 类似于自动完成列表的外观。

如果您想向用户显示所有值,您可以随时将其更改为多行列表框。您可以通过将 size 设置为任意值并在您想要隐藏时返回 1 来执行此操作。它并不完美,但它是另一种选择:

$("#open").click(function(e){
   e.preventDefault();
   $("#myselect").attr("size",5);    
});

$("#myselect").click(function(){
   $(this).attr("size",1); 
});

http://jsfiddle.net/jonathon/cr25U/

【讨论】:

    【解决方案3】:

    这是我的改编:

    HTML

    <button id='btn'>Click Me</button>
    <select id='test'>
        <option>Blah 1</option>
        <option>Blah 2</option>
        <option>Blah 3</option>
        <option>Blah 4</option>
    </select>
    

    JavaScript

    $('#btn').click(function(){
        $('#test').attr('size', 5);
    });
    
    $('#test').change(function() {
       $(this).attr('size', 1); 
    });
    

    这不会打开下拉列表,但它有点工作。

    演示here.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-20
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多