2012-12-20 71 views
1

這裏是場景 - 我有兩個jQuery Mobile彈出窗口,其中只有一個在給定時間顯示(另一個可能尚未顯示到該點)。每個彈出窗口都有jQuery Mobile選擇不同的虛擬類來幫助我找到它們。我需要做的是 - 在彈出窗口關閉之前(我通過彈出窗口('close')以編程方式進行)我想重置選擇以顯示其第一個值(這是默認值)。很簡單,我想。剛剛發行在彈出關閉之前重置jQuery Mobile選擇菜單

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

然而,做到這一點,你最終的誤差不能打電話selectmenu之前OT初始化的方法。我想象會發生這種情況,因爲「其他」彈出窗口也選擇了相同的類,並且在那個點上它們還沒有被初始化。

對另一個select使用不同的虛擬類並不是一個真正的選擇,因爲我對兩個緊密相關的彈出窗口使用了相同的事件處理代碼。

我也試過

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

但結果是相似的。當然,有一個可靠的方法來獲得一個給定班級的所有孩子的物品並在他們身上工作!我以爲我找到了它,但看起來並非如此。另一種選擇是確定在初始查詢初始化後每個項目是否返回,但看起來也不太容易。我非常感謝這個幫助。

回答

0

我似乎養成了回答自己的問題的習慣!下面是解

回顧一下

  • 你有兩個或更多的彈出窗口定義,他們每個人都使用它獲得風格到
  • 一個或多個選擇。大屏幕上的jQuery Mobile選擇和b。一個小屏幕上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將會打開。那時另一個可能或可能沒有被打開和關閉過。

去年statment的後果是,在通過

$重新選擇一個天真的嘗試VAL( '1 ')selectmenu(' 刷新 ')將無法正常工作(' 的sppp。') - 的jQuery會抱怨你正在嘗試刷新尚未初始化的選擇菜單。在小屏幕上使用的滾動器版本可以達到同樣的效果。所以這裏是確實工作的解決方案。

之前關閉彈出窗口,編程,你發出之後

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'); 

這裏有許多細微的問題,但最需要的指出了一個也許是這個 - upstyled控制可以最終創造出同一類別的其他元素。例如,當HTML選擇被升級爲jQuery Mobile selectmenu時,jQM會添加一個跨度,該跨度在此實例中具有相同的類 - sppp。

這就是爲什麼你需要通過一個過濾器來過濾查找(「的sppp‘)的結果(’選擇」)

一個有趣的事實我已經在這樣做的過程,很可能是一個JQM發現錯誤 - 最後一行

$(popid).popup('close') 

即使在提供的popid是錯誤的時候也能正常工作。

相關問題