2011-05-31 7 views
0


J'ai trouvé un code ici, pour laisser la souris sur le clic et faire défiler le contenu d'une div. Mais, quand je l'essaie, le retour false ou preventDefault n'empêche pas le clic, et relance la page. Savez-vous comment je pourrais faire fonctionner ce code? l'alerte fonctionne bien, mais le code rafraîchir la page:mousedown sur scrollTop: return false - problème

var scrolling = false; 
     $('#cat-diapo').find('#lien-fleche-cat').mousedown(function(e){ 
       var sous_cat = $(this).parent().prev('.sous-cat'); 
       //var sous_cat = $('.sous-cat'); 
       //var direction = '+='; 
       //sous_cat.animate({scrollTop: direction + 5}, 10); 
       scrolling = true; 
       alert('allop'); 
       //return false; 
       e.preventDefault(); 
       //startScrolling(sous_cat, '+=10'); 


     }) 
     /* 
     .mouseup(function(){ 
       scrolling = false; 
     });*/ 


     function startScrolling(obj, param){ 
      if (!scrolling) { 
       obj.stop(); 
      } else { 
       obj.animate({"scrollTop": param}, "fast", function(){ 
       if (scrolling) { startScrolling(obj, param); } 
       }); 
      } 
     } 

Merci

Répondre

0

Vous devez empêcher spécifiquementDefault() sur le clic. Vous devriez être en mesure de faire quelque chose comme ceci:

$('#cat-diapo').find('#lien-fleche-cat').bind({ 
    mousedown: function(){ 
     var sous_cat = $(this).parent().prev('.sous-cat'); 
     scrolling = true; 
     alert('allop'); 
    }, 
    click: function(e){ 
     e.preventDefault(); 
    } 
}); 

qui est juste une édition rapide de votre code. Mettez tout ce dont vous avez besoin dans la fonction mousedown.

+0

Merci beaucoup! ça marche parfait! – Paul

0

Il est un peu une supposition, mais je pense que, puisque vous êtes seulement capturer le mousedown, il ne suffit pas utilisez e.preventDefault(), mais vous devrez peut-être utiliser e.stopImmediatePropagation() pour empêcher les autres gestionnaires d'événements de se déclencher également (par exemple, les événements Click)