自分の質問に答える習慣がついたようです!これが解決策です
要点をまとめると
- 2つ以上のポップアップが定義されており、それぞれが1つ以上の選択を使用してスタイルが設定されます。
- a。大画面でのjQueryMobileselectと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
常に、2つのポップアップのうちの1つ、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');
ここには多くの微妙な問題がありますが、最も指摘する必要があるのはおそらくこれです-スタイルを変更したコントロールは、同じクラスを持つ他の要素を作成することになります。たとえば、HTMLselectがjQueryMobile selectmenuにアップスタイルされている場合、jQMは同じクラス(この場合はsppp)を持つスパンを追加します。
そのため、filter('select')を介してfind('。sppp')の結果をフィルタリングする必要があります。
これを行う過程で私が発見した興味深い事実は、jQMのバグである可能性があります-その最後の行
$(popid).popup('close')
提供されたpopidが間違っている場合でもその仕事をします。