2012-04-02 5 views
9

JQuery Mobile'da dikey içerik kaydırmayı nasıl devre dışı bırakabilirim? Tüm sayfa içeriğinin kaydırılmasını devre dışı bırakmak istiyorum. Teşekkürler.jQuery mobil devre dışı bırak sayfa içeriği dikey kaydırma


Ben jquery.mobile sayfası oluşturmak ve içerik olarak ben jquery.mobile.scrollview ekleyin. Kaydırma özelliğini kullandığımda sayfa içeriğimi yukarı ve aşağı kaydır. Kaydırma içeriğini nasıl devre dışı bırakabilirim? Benim sayfa kodu:

$(document).delegate('.ui-content', 'touchmove', false);​ 

Bunların hepsi data-role="content" unsurları kaydırma devre dışı olmalıdır:

<div id="page2" data-role="page" align="center"> 
    <div data-role="content"> 
     <div id="mydatacontent" class="form"> 
      <div class="data-table-shadow" data-scroll="y" class="square single-block-view-v" style="height: 750px;"> 
       <table id="datatable" class="data-table"> 
        <tbody id="datatableContent"> 
         <!-- Table Data Here --> 
        </tbody> 
       </table> 
      </div> 
     </div> 
    </div> 
</div> 
+0

Her iki yönde de kaydırma yapmak istiyorsanız ya da sadece dikey olarak ... event.preventDefault kaydırmayı önlemenize yardımcı olur – iDroid

cevap

13
Sen touchmove olaya bağlayabilir

ve return falsetouchmove olayın varsayılan davranışını önlemek için. .ui-content seçiciyi, yalnızca bu işlevin bir kaç sayfada/sayfalarda olmasını istiyorsanız daha spesifik olması için güncelleyebilirsiniz. http://jsfiddle.net/RKXLH/embedded/result/

+4

Sadece snippet'inizin sonunda * kötü * görünmez bir karakter olduğunu bilmenizi istedim. Oynamak için kopyalayıp yapıştırdım ve işe yaramadı. Bunu ancak 15 dakika süren mücadeleden sonra anladım. –

+0

@ JoãoCunha İlginç, hiçbir şey göremiyorum. Sayfanın karakter seti ile editör uygulamanızda kullandığınız arasında bir fark olabilir. – Jasper

+0

Onaylayabilir, Windows'da phpstorm'da da bana oldu. Satırı silme ve yeniden elle düzeltme. –

14

Yukarıda cevabı iyi çalışıyor bulundu: Burada

mobil cihazda deneyebilirsiniz bir demo. Ancak, bu ".ui içeriği" nin alt öğeleri üzerinde kaymayı engelleyecektir. yerine

"scrollstart"

olay kullanmak ve alt öğeler hala kaydırılabilir vardır.

$(document).delegate(".ui-content", "scrollstart", false); 

iOS6 web görünümünde test edilmiştir.

var touchScroll = function(event) { 
    event.preventDefault(); 
}; 

$('element1').click(function() { 
    //this will disable the scroll 
    $(this).bind('touchmove', touchScroll); 

    $('element2').click(function() { 
     //this will enable scrolling 
     $(document).unbind('touchmove', touchScroll); 
    }); 
} 

element1 ve Element2 istediğiniz herhangi bir şey olabilir, ve tabii ki tıklama fonksiyonu sadece örneğin, istediğiniz herhangi bir işlev seçebilirsiniz geçerli: Tecrübelerime göre

+1

Yukarıdaki yöntem işe yarar. Ama nasıl geri döndürmek için? eğer kaydırma işlemini başlattıktan sonra, eğer kaydırma işlemini başlatmak istiyorsak, ne yapılmalı? - Teşekkürler – Mak

+3

@Mak Daha sonra delegated olay işleyicisini '.undelegate()': http://api.jquery.com/undelegate/ kullanarak kaldırmalısınız. '.on()' işlevini kullanırsanız, olay işleyicisini kaldırmak için '.off()' ı kullanabilirsiniz. .live() '' .die() 'ye sahiptir, ancak bu noktada' .live() 'den uzaklaşmalısınız. – Jasper

+0

@Jasper aynı şeyi yaptı ... işe yaradı! – Mak

6

bu şekilde yapmak zorunda.

+0

işe yarıyor ... çok teşekkür ederim .... Tanrı sizi korusun .... –