Czy mogę zrobić jscrollpne takie, że okno rodzica nie przewija się, nawet gdy przewijanie dziecka osiągnęło dno. Teraz, gdy przewijanie podrzędne osiągnie dolne przewijanie rodzica. Chcę, aby rodzic przewijał tylko wtedy, gdy mysz nie znajduje się w przewijanej ścieżce potomnej.blok przewijania jscrollpane rodzic
Odpowiedz
Można użyć event.preventDefault()
$('.selector').mousewheel(function(event) {
event.preventDefault();
});
opisać zachowanie jest zgodne z projektem. Tak działają natywne paski przewijania przeglądarki na elemencie, który ma przepełnienie: auto. Nie polecałbym go zmieniać. Jednakże, jeśli chcesz, aby następnie odpowiedź Borgenk jest prawidłowa, można użyć tego kodu:
$('.scroll-pane')
.jScrollPane()
.bind(
'mousewheel',
function(e)
{
e.preventDefault();
}
);
Zobacz przykład tutaj (może być konieczne, aby zmniejszyć okno więc rodzic ma żadnej potrzeby przewijania): http://jsfiddle.net/VYcDZ/51/
Ran na ten problem dzisiaj ... widział nikt nie miał odpowiedź więc napisałem go
var blockScrollTarget;
$('.jscroll').mousewheel(blockScroll);
......
function blockScroll(e) {
blockScrollTarget = blockScrollTarget || $(e.currentTarget);
var d = blockScrollTarget.data('jsp');
if(d.getPercentScrolledY() == 1 || d.getPercentScrolledY() == 0) {
return true;
}
if(d.getIsScrollableV()) {
e.preventDefault();
}
}
Powyższe odpowiedzi nie działa dla mnie. Jeśli są wygodne z edycji źródła wtyczki można wystawiać odpowiednie metody wewnętrznych API publicznej:
// Public API
$.extend(
jsp,
{
...
initMousewheel : function(){
initMousewheel();
},
removeMousewheel : function(){
removeMousewheel();
}
}
);
Teraz można warunkowo i pragmatycznie eanable/wyłączyć przewijanie jakiegokolwiek JScrollPane:
api = $('#full-page-container').data('jsp');
api.removeMousewheel(); // disable
api.initMousewheel(); // enable
Nie miałbym nic przeciwko temu, żeby znać odpowiedź na to pytanie. – Atorian