2013-06-04 77 views
3

我有一個JQM面板,其中包含一個選擇菜單。打開一個對話框autocloses面板

當您打開面板並單擊菜單時,對話框打開。 現在,如果您選擇一個選項,您將返回到該頁面,面板將被關閉。 有沒有辦法保持面板打開?

這是fiddle

<div id="panel" data-role="panel"> 
    <select id="select" data-native-menu="false"> 
     <option value="1">text</option> 
     ... 
     <option value="9">text</option> 
    </select> 
</div> 
+1

http://jsfiddle.net/Palestinian/szFzP/1/使用'$(document).on('pagehide','#select-dialog',function(){(#)面板').panel('open'); });' – Omar

+0

感謝您爲Omar提供的這個工作解決方案! 雖然我仍然懷疑它是否可以阻止關閉而不是重新打開它。 – joekeee

+0

導致面板關閉的原因是對話框。因爲對話框像頁面一樣對待,所以當你打開一個對話框時,你可以把頁面留到另一個頁面,但是用'data-rel = dialog'。即使'data-dismissible =「false」'也不會強制面板保持打開狀態。但是,如果需要,也可以強制在「pageshow」上打開面板。 – Omar

回答

3

導致面板關閉的原因是對話框。因爲對話框像頁面一樣對待,所以當你打開一個對話框時,你可以把頁面留到另一頁面,但是用data-rel='dialog'

即使data-dismissible='false'也不會強制面板保持打開狀態。但是,您也可以強制面板在pageshow上打開,或者一旦對話框消失pagehide

Demo

$(document).on('pagehide', '#select-dialog', function() { 
$('#panel').panel('open'); 
}); 
+0

偉大的解決方案,upvoted。 FWIW,我發現對'pagebeforehide'事件的綁定效果稍好一些 - 它比'pagehide'早觸發,並且在屏幕轉換回原始頁面時面板完全打開。使用'pagehide'時,原始頁面加載後又出現了第二次延遲,但面板尚未打開。 –

+0

@ElliotB。如果您使用的是jQM 1.4,則頁面事件被pagecontainer事件替代時可能會出現故障。此解決方案適用於jQM 1.3及更早版本。 – Omar

0

跟進OT @奧馬爾的建議下,我不得不添加觸發器()方法來獲取面板中打開。因此:$('#panel').panel('open').trigger();

相關問題