2013-05-09 12 views
5

Mam kilka DIV na mojej stronie, które wyglądają tak:Jak zapobiec przewijaniu strony po przewinięciu do dołu elementu div wewnątrz?

<div style="height:200px; overflow:auto;"> 
    <div style="height:300px;"> 
     <!--Lots of text here--> 
    </div> 
</div> 

Gdy użytkownik znajdzie się nad nimi i zwoje z kółkiem przewijania one w porządku. Problem polega na tym, że gdy użytkownik dojdzie do dna, sama strona zacznie się przewijać.

Czy istnieje sposób, aby temu zapobiec (przy użyciu javascript w razie potrzeby), tak aby fokus pozostanie na div, nawet jeśli przewija się do dołu, a sama strona przewija się tylko wtedy, gdy użytkownik nie jest unosi się na div ?

+0

To pytanie zostało zadane wcześniej. Oto [wersja demo] (http://jsbin.com/ixura3/3), a odpowiedź można znaleźć tutaj: http://stackoverflow.com/questions/5802467/prevent-scrolling-of-parent-element Zasadniczo trzeba powiązać zdarzenie kółka myszy i użyć Javascript, aby kontrolować przewijanie elementów potomnych. Jego wtyczka ma również kilka interesujących wersji demonstracyjnych: http://brandonaaron.net/code/mousewheel/demos –

Odpowiedz

2

Sprawdź to demo: http://jsfiddle.net/zUGKW/1/

Kod:

// bind the mousewheel event 
$('.myDiv').bind('mousewheel', function(e) { 
    // if scroll direction is down and there is nothing more to scroll 
    if(e.originalEvent.wheelDelta < 0 && 
    ($(this).scrollTop() + $(this).height()) >= this.scrollHeight) return false; 
}); 
+0

Co w tym złego? – techfoobar

+0

Próbowałem go w jfiddle i nie działa. Po przewinięciu do dołu elementu div poczekaj sekundę i przewiń jeszcze raz, strona przewija się. – Urbycoz

+0

+1, działa dla mnie przy użyciu Google Chrome 26.0.1410.64 m. – ComFreek

Powiązane problemy