2010-11-05 25 views
0

Je voudrais faire quelque chose comme:Comment annuler scrollTo s'il a été déclenché?

var scrollable; 
scrollable = $(window).scrollTo(99999, 99999); 
$(window).scroll(function() { 
    // cancel the scrollTo 
    scrollable = null; 
}); 
+1

À l'intérieur du défilement() - permet d'obtenir la position de défilement actuelle de la fenêtre et d'appeler scrollTo() sur ces coordonnées. – Mikhail

+0

hmmm, il semble que votre conseil fonctionne, mais la chose drôle est que scrollTo déclenche défilement. Je dois attacher le défilement à un événement de souris. Je pense que – jonobr1

+1

il fait la queue le défilement est un délai 0 très étrange, ce qui provoque des problèmes selon la version de jQuery que vous utilisez ... pas sûr que vous * pouvez * l'interrompre, sauf si vous changez le '.scrollTo()' source est une option. –

Répondre

0

Après quelques tripoter, je trouve cela bien.

$(window).scrollTo(99999, 99999); 
$(window).click(function() { 
    stopScroll(); 
}); 

if(window.addEventListener) document.addEventListener('DOMMouseScroll', stopScroll, false); 
document.onmousewheel = stopScroll; 

function stopScroll() { 
    $(window).stop(true, false); // Stops and dequeue's animations 
} 

Pas besoin de modifier le plugin ou la source!

1

Basé sur le code de jonobr1 cela fonctionne pour moi:

if(window.addEventListener) document.addEventListener('DOMMouseScroll', stopScroll, false); 
document.onmousewheel = stopScroll; 

function stopScroll() { 
    $(window)._scrollable().stop(true, false); // Stops and dequeue's animations 
} 

J'ai ajouté un appel à stopScroll avant mon scrollTo appelle à mes gestionnaires d'événements aussi.