2013-05-23 21 views
18

jQueryMobile sayfalarında gezinirken aynı üstbilgi/altbilgiyi saklamak için kolay bir yöntem var mı? Şimdiye kadar karşılaştığım tek çözüm, sayfa değişikliğinde dinamik olarak enjekte etmeye dayanıyor, ancak bu geçişleri sıkıştırıyor ve sadece elemanları klonlıyor, orijinaline ihtiyacım var.jQueryMobile'de aynı üstbilgi/altbilgi sayfalarda nasıl tutulur?

Resmi olarak desteklenen bir yol var mı? Bu problemle uğraşan tek kişi gibi görünmek garip geliyor mu?

+1

Animasyon olmadan geçiş sırasında bunları sabitlediniz mi? Veya tüm sayfalar için aynı üstbilgi/altbilgiye sahip misiniz? – Omar

+0

@Omar Tüm sayfalar için aynı üstbilgi/altbilgi. Animasyonlu olmalarını isterim, ancak yalnızca sayfanın kendisi animasyonluysa büyük bir sorun değil. – Muis

cevap

9

Sorununuz için yerleşik bir çözüm mevcut değil. jQuery Mobile, yüklenen sayfalar arasında bir üstbilgi ve altbilgi paylaşacak bir çözüme sahip değil.

Yapabileceğiniz tek şey, bunları dinamik olarak enjekte etmek ya da en başından itibaren kullanmaktır. Senin durumunda, yanlış zamanda yapıyorsun. Bir başlık ve altbilgiyi doğru şekilde eklemek istiyorsanız, doğru sayfa etkinliği sırasında bunu yapmanız gerekir.

Bir çalışma örneği: http://jsfiddle.net/Gajotres/xwrqn/

kaydırın sayfalarını değiştirmek ve (Her sayfada düğmeleri ekleyerek rahatsız etmek istemedim) nasıl çalıştığını görmek.

$(document).on('pagebeforecreate', '#article2, #article3', function(){ 
    $('<div>').attr({'data-role':'header','data-theme':'b','data-position':'fixed','data-id':'footer'}).append('<h3>Article</h3>').appendTo($(this)); 
    $('<div>').attr({'data-role':'footer','data-theme':'b','data-position':'fixed','data-id':'footer'}).append('<h3>Article footer</h3>').appendTo($(this));  
}); 

sayfa ilk kez oluşturulduğunda bu SADECE kez tetikleyecek pagebeforecreate sırasında yaparsanız. Dinamik içerik eklenecek ve içerik biçimlendirme artırılmadan önce pagebeforecreate tetiklendiğinden, üstbilgi ve altbilgi stilleri hakkında endişelenmenize gerek kalmayacaktır.

Bildirim bir nitelik 'veri-id': 'altbilgi' yalnızca içerik sayfası geçiş başlığında sırasında animasyon ve altbilgi aynı görünür yüzünden, her üstbilgi ve altbilgi eklendi. Ayrıca, jsFiddle bir hata var, sayfalar arasında gezinirken 1-2px atlayacaklar. Bu gerçek bir yaşam örneğinde olmayacak.

+0

Bu, kaçınmak istediğim bir çözüm gibi görünüyor. Örneğin, altbilgiye bir açılır kutu yerleştirirseniz ve kullanıcılar oraya bir seçim yaparsa, sonraki klonlanmış bir altbilgi eklendiğinde seçimi kaybolacaktır. sayfa. – Muis

+0

Doğru, ama burada iyi bir çözüm yok. Bu verileri geçişler arasında saklamanız ve yeni bir sayfada tekrar göstermeniz gerekecektir. Ne düşündüğünüzü bu kadar karmaşık bir çözüm değil. İnanın bana, istediğiniz bir çözümü aramak için daha fazla zaman kaybedeceksiniz, o zaman bunu böyle yapmanıza neden olacaktır. Şu anda jQuery Mobile 1.3.1 sayfa widget'ları bir atasının dışında kullanılamaz. JQuery Mobile 1'de mümkün olacaktır.4 ama dışarı çıkmasını beklemeniz gerekecek. Ve bu olayın amaçlandığı gibi çalışıp çalışmadığı sorgulanabilir. – Gajotres

+1

Şimdilik, sayfa sistemini kullanmayı bıraktım ve sadece DIV'leri gizleyerek/göstererek diğer sayfaları simüle ettiğim bir sayfa kullanın. Gerçekten çılgınca çarkı yeniden icat etmek zorundayım, çünkü normal çağrı sistemi bunu desteklemiyor. Neyse, yardımlarınız için teşekkürler! – Muis

14

kolay yolu tüm sayfalarda üstbilgi ve altbilgi bir "veri-id" ayrıntısını eklemektir. Üstbilgi/altbilgiyi "kalıcı" hale getirmek için, tüm sayfalarda aynı veri kimliğini kullanın.

<div id="page1"> 
<div data-role="header" data-id="main-header"></div> 
... 
<div data-role="footer" data-id="main-footer"></div> 
</div> 

<div id="page2"> 
<div data-role="header" data-id="main-header"></div> 
... 
<div data-role="footer" data-id="main-footer"></div> 
</div> 

Ayrıca ya "sabit" css veya veri-pozisyonunda = olarak üstbilgi ve altbilgi düzeltmek isterdim.

Bu yardımcı olur umarım. jQueryMobile sayfalarını gezinirken

 $(":mobile-pagecontainer").on("pagecontainerbeforetransition", function (event, ui) { 
      $("#header").prependTo(ui.toPage); 
      $("#control-panel").appendTo(ui.toPage); 
     }); 

aynı başlık/alt bilgi tutar:

+2

Vay, bu benim için yaptı! Diğer çözümlere göre çok kolay. – lapo

+0

FYI, Bu altbilgi için çalıştı, ancak üstbilgi için değil. Bunu jQM 1.4 –

+0

'da test ettim @Mahendra bana bunu nasıl uygulayabildiğini söyleyebilir misin? Altbilgiyi

'a nasıl bağlarsınız? Ayrı bir footer.html var mı? – adiga

0

Burada benzer bir sorunu çözüldü nasıl. Sayfa değiştirmede dinamik olarak enjekte eder, geçişleri sıkıştırır, ancak öğeleri klonlamaz, orijinali verir.

+0

Bu O eklemez sayfa – HughHughTeotl

+0

için HER geçişten önce üstbilgi/altbilgi ekleyecektir. Hareket ediyor. Ve evet, her geçişten önce. OP'lerin kriterlerinin çoğuna hitap etmenin basit bir yolu. – Jayen

İlgili konular