【问题标题】:Switch between native and custom select with jQuery mobile使用 jQuery mobile 在本机和自定义选择之间切换
【发布时间】:2012-03-08 04:32:56
【问题描述】:

我有一个 jQuery mobile SELECT,其中选项是动态更改的,我需要从原生选择更改为自定义选择以根据选项的数量显示选项(数据原生菜单)(并且不更改页)。

示例:如果我按下一个按钮,我将选择中的选项数动态更改为五个,并且我想将选择显示为原生,然后,如果我按下另一个按钮,我将选项更改为 2,所以我想将其显示为自定义。

有什么想法吗?有可能吗?

【问题讨论】:

    标签: jquery html jquery-mobile html-select


    【解决方案1】:

    是否可以只有两个选择框?一个应用了样式,一个没有?然后根据您使用的集合的大小,您只需显示正确的选择框?

    我尝试创建一个将 jquery 移动样式动态应用/删除到 1 个选择框的示例,但我不确定它是否可行。

    【讨论】:

      【解决方案2】:

      由于 JQM 自定义选择确实涉及大量 DOM 修改(想想子页面,其中包含与原始选择相关的所有选项列表),我不知道您是否可以轻松地在两种模式之间切换。

      您总是可以在修改选项数量后重建选择,如下所示:

      //refresh value         
      $('select').selectmenu('refresh');
      
      //refresh and force rebuild
      $('select').selectmenu('refresh', true);
      

      取自JQM docs。只需尝试在此处添加/删除 data-native-attribute 看看会发生什么。

      我通常在页面加载时设置选择,如下所示:

      $('div:jqmData(role="page").basePage').on('pagebeforecreate', function() {  
      
          // Jquery Mobile Custom Select
      if ( !$.support.touch ) {       
          $(this).find('select').attr('data-native-menu',false);
          }
      });
      

      这种方式在触摸设备上所有选择都将获得 data-native-menu 属性,并将“增强”到原生选择,而在桌面 JQM 上接管并创建自定义选择。

      我认为这是“最好看”的做事方式。只需确保添加属性之前 JQM 增强元素。

      【讨论】:

      • 我用的是iPod,刷新选项不是问题,我设置了data-native-menu=false 所以会显示为native,但是当数字从native变成custom时问题是选项在同一个选择中发生变化,执行类似 $(select).attr('data-native-menu',true) 之类的操作不成功,我尝试像 JQM 那样动态更改 DOM,但它也不起作用,我猜是因为缺少 JQM 事件,还有更多想法 ¿
      • 您是否尝试在修改选项后刷新选择。检查答案中的链接 - jquerymobile.com/demos/1.1.0-rc.1/docs/forms/selects/… = call $('select').selectmenu('refresh');
      • 是的,我尝试的第一件事,不幸的是对我来说它没有用。忘了提到我使用 JQM 1.0
      • 好的。请尝试在包装 div 上调用 selectmenu('refresh') = 应该是 div.ui-select。
      • 看起来这并不容易,我必须重新渲染我自己的 div "select-menu" 应该由 JQM 刷新
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多