2013-06-01 16 views
20

Czy można ustawić zdarzenia wskaźnika, aby reagował tylko na przewijanie lub przeciąganie na tabliczce dotykowej? Mam div "na drodze" do przewijania złożonych html aranżacji * i chciałbym wiedzieć, czy mogę ograniczyć zdarzenia wskaźnika, aby reagować tylko na ruchy kółka/kółka myszy.Jak używać zdarzeń wskaźnikowych do reagowania tylko na zdarzenia przewijania?

Interesuje mnie wiedza, czy rozumiem to poprawnie. Jeśli pointer-events:none; oznacza, że ​​wszystkie zdarzenia są nieważne, w jaki sposób mogę zabić wszystkie zdarzenia, ale pozostawić jedną aktywną?

Ustawiłem obszar HTML, który jest większy niż pole, w którym się mieści, ale gdybym miał pokazać pasek przewijania, wydawałby się wyższy niż powinien być z powodu wyskakującego okienka (pozycja: góra) element. Obszar ten musi jeszcze być przewijane, tak aby osiągnąć ten cel użyłem jQuery, aby moje „okno, aby przewinąć” podążać niewidoczny div wewnątrz div:

<div id="scrollcontrol"style="overflow-y:auto;overflow-x:hidden;position:absolute; 
    top:12px;left:180px;width:40px;height:1300px;"> 
    <div id="catscrollpos"style="position:absolute; 
    top:0px;width:200px;height:2250px;"> 
    </div> 
</div> 

Script

$('#scrollcontrol').scroll(function({ 
    $('#rangetable').css({ 
    'top':$('#catscrollpos').position().top+'px' 
    }); 
}); 
+0

Właściwość pochodzi ze specyfikacji SVG, a dla elementów HTML jest nadal bardzo ograniczona (patrz https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events). Jedynymi obsługiwanymi wartościami dla "wskaźników-zdarzeń" na elementach HTML są "none", co powoduje, że element całkowicie ignoruje zdarzenia-pointerów (chociaż zdarzenia mogą być bańkami do elementów-rodzica pod elementem) i 'auto', który ustawia domyślne zachowanie. – tobi

+0

proszę sprawdzić, czy można używać zdarzeń przewijania urządzeń dotykowych. http://www.w3schools.com/jquerymobile/jquerymobile_events_scroll.asp – ravi1991

Odpowiedz

4

Co do specyfikacji w docs:

Gdy element zastosował pointer-events: none;

Element jest nigdy cele myszy dowolne zdarzenie i wszelkie zdarzenia są nieważne;

Proszę spojrzeć na tej demonstracji:

http://jsbin.com/wewosumehi/1/

wydarzenia nie są opalane, nie można nawet przewijać container.

+1

o to jest taki wstyd – SuperUberDuper

+8

To odpowiada na pytanie zadane, ale ja i jestem pewien, że PO, zastanawiam się, czy jest jakikolwiek inny sposób na osiągnięcie to. Zasadniczo, czy istnieje odpowiednik "pointer-events: none", który nadal pozwala na przewijanie? Chciałbym, żeby pasek przewijania był klikalny, ale nie jestem pewien co do OP. – trysis

Powiązane problemy