2012-02-17 33 views
2

我創建了一個的jsfiddle,使使用導航欄標籤不改變URL哈希:http://jsfiddle.net/ryanhaney/eLENj/jQuery Mobile:data-rel =「back」+數據轉換不起作用?

1)如果我從主頁單擊頁面中的「第1頁」鏈接,然後點擊「後退」按鈕,我按預期獲得反向幻燈片動畫。 2)如果我從主頁點擊「頁面1」鏈接,然後點擊「頁面2」或「頁面3」(在頁腳導航欄中),然後點擊「返回」按鈕。沒有過渡。

如果我在jsfiddle javascript中更改「$ .mobile.changePage」調用後使用情景#2來使用非「無」的轉換,則後退按鈕將使用相同的轉換。

如何執行data-rel =「back」元素的轉換?

注意:在jsfiddle示例中,希望將選項卡選擇保留在導航歷史記錄之外。無論您選擇哪個標籤,後退按鈕都應回到家中。標籤之間不應該有轉換。 jsfiddle示例已經提供了這種行爲。

+0

東西:http://jsfiddle.net/eLENj/9/ – 2012-02-17 02:12:02

+0

有趣的是,警報改變行爲。看到我上面的註釋,因爲您的修改包含了導航歷史記錄中的選項卡。 – 2012-02-17 04:18:34

+0

看看這個小提琴:http://jsfiddle.net/ryanhaney/E86M9/它改變基於href的轉換。 transition:anchor.attr(「href」)==「#page-3」? 「淡入淡出」:「無」 – 2012-02-17 04:27:30

回答

3

我想我明白了:

不得不重置changePage默認過渡值

$("a[data-role=tab]").each(function() { 
    var anchor = $(this); 
    anchor.bind("click", function() { 
     $.mobile.changePage(anchor.attr("href"), { 
      transition: "none", 
      changeHash: false 
     }); 
     return false; 
    }); 
}); 

$("div[data-role=page]").bind("pagebeforeshow", function (e, data) { 
    $.mobile.silentScroll(0); 
    $.mobile.changePage.defaults.transition = 'slide'; // reset default here 
});​ 

HTML

<div id="home" data-role="page"> 
    <div data-role="header"> 
     <h1>Home</h1> 
    </div> 
    <div data-role="content"> 
     <p> 
      <a href="#page-1">Page 1</a> 
     </p> 
    </div> 
</div> 

<div id="page-1" data-role="page"> 
    <div data-role="header"> 
     <a href="#" data-icon="arrow-l" data-iconpos="left" data-rel="back" data-transition="slide" data-direction="reverse">Back</a> 
     <h1>Page 1</h1> 
    </div> 
    <div data-role="content"> 
     <p>Page 1 content</p> 
    </div> 
    <div data-role="footer" data-position="fixed"> 
     <div data-role="navbar"> 
      <ul> 
       <li><a href="#page-1" data-role="tab" data-icon="grid" class="ui-btn-active">Page 1</a></li> 
       <li><a href="#page-2" data-role="tab" data-icon="grid">Page 2</a></li> 
       <li><a href="#page-3" data-role="tab" data-icon="grid">Page 3</a></li> 
      </ul> 
     </div> 
    </div> 
</div> 

<div id="page-2" data-role="page"> 
    <div data-role="header"> 
     <a href="#" data-icon="arrow-l" data-iconpos="left" data-rel="back" data-transition="slide" data-direction="reverse">Back</a> 
     <h1>Page 2</h1> 
    </div> 
    <div data-role="content"> 
     <p>Page 2 content</p> 
    </div> 
    <div data-role="footer" data-position="fixed"> 
     <div data-role="navbar"> 
      <ul> 
       <li><a href="#page-1" data-role="tab" data-icon="grid">Page 1</a></li> 
       <li><a href="#page-2" data-role="tab" data-icon="grid" class="ui-btn-active">Page 2</a></li> 
       <li><a href="#page-3" data-role="tab" data-icon="grid">Page 3</a></li> 
      </ul> 
     </div> 
    </div> 
</div> 

<div id="page-3" data-role="page"> 
    <div data-role="header"> 
     <a href="#" data-icon="arrow-l" data-iconpos="left" data-rel="back" data-transition="slide" data-direction="reverse">Back</a> 
     <h1>Page 3</h1> 
    </div> 
    <div data-role="content"> 
     <p>Page 3 content</p> 
    </div> 
    <div data-role="footer" data-position="fixed"> 
     <div data-role="navbar"> 
      <ul> 
       <li><a href="#page-1" data-role="tab" data-icon="grid">Page 1</a></li> 
       <li><a href="#page-2" data-role="tab" data-icon="grid">Page 2</a></li> 
       <li><a href="#page-3" data-role="tab" data-icon="grid" class="ui-btn-active">Page 3</a></li> 
      </ul> 
     </div> 
    </div> 
</div>​ 
+0

標記爲答案。我認爲這是一個urlHistory得到處理的錯誤。謝謝! – 2012-02-17 05:27:49

+0

將此作爲bug添加到jQM回購:https://github.com/jquery/jquery-mobile/issues/3599 – 2012-02-17 05:31:50

0
anchor.bind("click", function() { 
$.mobile.changePage(anchor.attr("href"), { 
    transition: "none", 
    changeHash: false 
}); 
return false; 

似乎是"transition: "none","的問題。當我將其刪除或更改爲任何東西,它可以作爲你期望它:http://jsfiddle.net/PQsyP/

+0

實際上,當我將轉換過渡到「淡入淡出」時,如果我從家中轉到第1頁並單擊後退,我會得到預期的默認幻燈片轉換。但是,如果我從家到第1頁到第2頁並點擊返回,後退過渡將變爲淡入淡出。奇怪的。 – 2012-02-17 04:47:26

+0

你說得對。修改jsfiddle以刪除轉換。現在默認幻燈片也在選項卡上。將玩弄它看看如何指定它到標籤。 – Sologoub 2012-02-17 04:59:26