2012-12-10 65 views
1

關閉按鈕,這裏是一個非常簡單的小提琴:在對話框返回錯誤頁面

http://jsfiddle.net/mmSKj/

如果單擊標題欄中的「預設」按鈕,它會打開一個對話框。如果您單擊對話框上的「關閉」按鈕,而不是返回到它來自的頁面,則會轉到頁面上的最後一頁(不包括對話框本身)(內容爲This is another page)。怎麼來的?有沒有辦法修復自動插入的後退按鈕,以便它正常運行(比如我在對話框中包含的「home」按鈕),否則,是否有辦法刪除關閉按鈕。

<div data-role="page" id="index"> 
    <header data-role="header"> 
    <h1>Index</h1> 
    <a href="#presets" data-icon="star" class="ui-btn-right" data-transition="pop" data-rel="dialog">Presets</a> 
    </header> 
    <article data-role="content"> 
     <div>This is the main page</div> 
    </article> 
</div> 
<div data-role="page"> 
    This is another page 
</div> 
<div data-role="page" id="presets"> 
    <header data-role="header"> 
     <h1>Presets</h1> 
     <a href="#index" data-icon="home" data-iconpos="notext"></a> 
    </header> 
    <div data-role="content"> 
     This is a dialog! 
    </div> 
</div> 

更新

由於TAIFUN指出,問題是缺乏一個頁面上的ID的。添加一個id修復了我的第一個小提琴。然而,我的實際情況是更復雜一點,如本琴:

http://jsfiddle.net/mmSKj/2/

在這裏,我實際上是創建動態使用基因敲除的頁面,我給你的ID通過數據綁定的網頁,但是,它似乎,由於某些原因,這些id不被jQuery Mobile識別。如果您使用Firebug查看,您可以看到ID已正確添加到頁面的屬性中,但是當關閉對話框時,您將在第3頁而非原始頁面結束。

更新2

簡單的修復,我只是增加了一個虛擬ID爲HTML的位敲除會作爲模板使用:

<!-- ko foreach: pages --> 
<div data-role="page" data-bind="attr: {id: name}" id="dummy"> 
    This is <span data-bind="text:name"></span> 
</div> 
<!-- /ko --> 

here

虛擬身份證被淘汰賽取代,所以指向該網頁的鏈接正常工作,jQuery手機似乎很高興!

回答

1

添加id到其他頁面

<div data-role="page" id="anotherpage"> 
    This is another page 
</div> 

那麼它會工作,看到jsfiddle

+0

好了,能解決我的小提琴這個問題,但是,當然,我的真正的系統是一個稍微複雜一點。在那些額外的頁面是由knockout動態創建的,他們有ID,但似乎jQuery Mobile忽略它們。這可能是另一個問題,由jQuery Mobile發佈時的順序造成的,而淘汰賽則是綁定的。 –

+0

好吧,我想我已經找到了解決方案。這很愚蠢而且很冒險,但是如果我只是在我的模板中添加一個僞造的ID,它似乎使jQuery mobile足夠快樂,它可以工作。淘汰賽將取代通過數據綁定到正確的ID,但它似乎工作。 –

+1

另請參閱我的其他答案,刪除關閉按鈕... – Taifun

1

回來了另一個解決方案,因爲你提到的:有沒有辦法刪除的關閉按鈕?是的,只需添加這種風格,也見this answer ...

<style> 
    .ui-dialog .ui-header a[data-icon=delete] { 
    display: none; 
    } 
</style> 

和另一jsfiddle證明

+0

再次感謝。我沒有嘗試過,但我確定它可能有效。這種方法的唯一缺點是,如果他們決定更改佈局或類名,它可能會在未來版本的jQuery Mobile中崩潰。 –