在弹出窗口关闭之前,请重置jQuery移动选择菜单



这是场景 - 我有两个jQuery移动弹出窗口仅在给定时间显示其中一个(另一个可能尚未显示到这一点)。这些弹出窗口中的每一个都有jQuery Mobile Select给出不同的虚拟课程,以帮助我找到它们。我需要做的是 - 在关闭弹出窗口之前(我是通过弹出窗口('Close')以编程方式进行操作的)我想重置SELECTS以显示其第一个值(这是默认值)。简单,我想。只是发行

$('.selector').val(0).selectmenu('refresh')

但是,执行此操作,您最终会出现错误,无法调用SelectMenu的方法先验初始化。我想这发生了,因为"其他"弹出窗口也具有同一类的选择,并且尚未在此时初始化。

为另一个选择使用其他虚拟类别不是一个选择

我也尝试了

$(popupid).find('.selector').val(0).selectmenu('refresh') 

但结果相似。当然,有可靠的方法可以获取给定课程的所有子项目并在上面工作!我以为我只是找到了,但看起来并非如此。另一个选择是确定初始查询后是否返回的每个项目是否返回,但这似乎也不容易。我非常感谢您对此的帮助。

我似乎已经养成了回答自己的问题的习惯!这是解决方案

回顾

  • 您有两个或多个弹出窗口,每个弹出窗口都使用一个或多个选择,这些选择被设计为
  • a。大屏幕和b上选择的jQuery移动设备。在小屏幕上选择的MobisCroll
  • 通过虚拟类声明可以轻松识别选择的选择
  • 关闭弹出窗口时,您需要确保选择返回到显示其第一个选项

为了使它更具体,这是一个示例

<div data-role='popup' id='p_taqa1618A'>
  <select id = 'r_taqa1618A' class='sppp' data-role='none' data-mini='true'>
   <option value='1'>One</option>
   <option value='2'>Two</option>
   <option value='3'>Three</option>
   <option value='4'>Four</option>
   <option value='5'>Five</option>
  </select>
  //other controls inside this popup

<div data-role='popup' id='p_taqa1618B'>
  <select id = 'r_taqa1618A' class='sppp' data-role='none' data-mini='true'>
   <option value='1'>Eins</option>
   <option value='2'>Zwei</option>
   <option value='3'>Drei</option>
   <option value='4'>Vier</option>
   <option value='5'>Funf</option>
  </select>
  //other controls inside this popup

在任何给定时间的任何一个弹出窗口中,Taqa1618a或Taqa1618b都只能打开。当时,另一个人可能以前可能已经打开或关闭。

最后一个陈述的结果是,幼稚地尝试通过

重置选择

$('。sppp')。val('1')。selectmenu('refresh')将无法工作 - jQuery会抱怨您正在尝试刷新尚未初始化的SelectMenu。在小屏幕上使用的滚动器版本将执行同上。因此,这是工作的解决方案。

在结束弹出窗口之前,以编程方式发行

if (600 < $(window).width())
{
 $(popid).find('.sppp').filter('select').val('1').selectmenu('refresh');
} else
{
 $(popid).find('.sppp').filter('select').scroller('setValue','1',true);
}

接着

$(popid).popup('close');

这里有许多微妙的问题,但是最需要指出的问题可能是这样 - 最终可以创建其他具有同一类的元素。例如,当html选择被升至jQuery移动selectmenu jqm时,添加了一个带有相同类-SPPP的跨度。

这就是为什么您需要通过过滤器('select')

过滤find('。sppp')结果

我在这样做的过程中发现的一个有趣的事实可能是JQM错误 - 最后一行

$(popid).popup('close')

即使提供的PopID是错误的。

最新更新