2009-10-02 4 views
8

J'ai deux divs et deux boutons:Comment faire pour div div continuellement sur l'événement mousedown?

<div id="container"> 
    <div id="items"></div> 
</div> 
<div id="up"></div> 
<div id="down"></div> 

Comment faire défiler en continu « » #items jusqu'à ce que l'utilisateur relâche le bouton? J'ai essayé d'utiliser l'événement jquery mousedown et la fonction d'animation, mais je n'ai pas réussi à le faire fonctionner.

$("#up").mousedown(function(){ 
$("#items").animate({"top": "+=10px"}, "fast"); 
}) 

Le code ci-dessus déplace la div une seule fois. Je veux réaliser une animation continue jusqu'à ce que le bouton soit relâché. Merci de votre aide!

Répondre

14

S'il vous plaît, essayez ceci:

var scrolling = false; 

jQuery(function($){ 
    $("#up").mousedown(function(){ 
     scrolling = true; 
     startScrolling($("#items"), "-=10px"); 
    }).mouseup(function(){ 
     scrolling = false; 
    }); 
}); 

function startScrolling(obj, param) 
{ 
    obj.animate({"top": param}, "fast", function(){ 
     if (scrolling) 
     { 
      startScrolling(obj, param); 
     } 
    }); 
} 
+6

Cela fonctionne, sauf que vous obtiendrez une erreur de js que obj.animate n'est pas une fonction sur mouseup. Une manière plus simple de le faire et d'éviter l'erreur js est la suivante: if (! Scrolling) { obj.stop(); } else { obj.animate ({ "top":} param, "rapide", function() { if (défilement) { startScrolling (obj, param);} }); } – Mark

+1

J'ai fait un [violon] (https://jsfiddle.net/blindside/18p65htx/) qui incorpore la réponse de @ fedosov avec l'entrée supplémentaire de Mark, avec quelques modifications de ma part: D –

+0

@JesseDupuy comment défile-t-on un bouton en haut et l'autre en bas? On dirait que vous leur avez seulement appris à faire défiler vers le bas! –

Questions connexes