如何取消选择jquery mobile 1.4选择的选项?

时间:2016-01-23 11:24:14

标签: jquery-mobile drop-down-menu

我在页面上有<select>,在某些情况下我需要重置用户选择的值。我知道如何在普通的选择元素上做到这一点,但我使用jQuery Mobile和常用的方法不起作用。我甚至尝试过在网上找到的其他一些方法,但我一直都会遇到错误或者什么也得不到。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

重置一个已经被jQuery Mobile(jQM从现在开始)接管的选择有一些问题,因为它做了一件很糟糕的工作。

首先,您需要正确的方式来访问它。 当你在标记中声明一个select时,在运行时jQM将它包装成一个div(在另一个div中,但只是忽略它)并以这种方式将一个span预备到select:

<div>
    <span class="a_class"></span>
    <select id="an_id" class="a_class">
    </select>
</div>

问题在于,jQM最好是按类使用而不是ID(因为它甚至会使它们变得非常混乱),所以如果你按照jQM的方式做事......你最终会选择跨度和在它上面调用函数:这不仅不会重置组合,而且还会给你一个很好的例外。

解决方案:

  1. 使用id选择带选择器的选项(双关语)
  2. 继续使用类并使用此选择器:$('a_class').filter('select')
  3. 继续使用类并使用此选择器:$('a_class')[1]
  4. 第一个在jQM的上下文中存在风险,第三个依赖于选择器将始终首先选择范围然后选择(并且底层结构将始终如此)的事实。老实说,我更喜欢第二种方法,因为我觉得它更安全。

    一旦找到了选择的方法,就可以取消选择它所选择的选项,但是两种更明显的方法不起作用:

    1. jQM中没有取消选择所选选项的功能
    2. jQM的选择不会与HTML select
    3. 保持同步

      <强>解决方案

      您需要分两步完成:首先,删除HTML选择(按类访问);然后,请求jQM的选择与HMTL的一个选择:

      $('.a_class').filter('select')[0].selectedIndex = -1;
      $('.a_class').filter('select').selectmenu('refresh');