2010-12-08 5 views
0

J'ai une liste <ul> qui est un peu long. Lorsque vous développez (glisser vers le bas) cette liste d'éléments, le navigateur ne défile pas vers le bas et tout va bien. Lorsque vous contractez (faites glisser vers le haut) cette liste d'éléments, le navigateur défile vers le haut clignote/clignote A lot tout en faisant ainsi.jquery diapositive clignotant/clignote problème sur Firefox ubuntu

  • Cela ne se produit pas sur MAC Firefox.
  • Ni sur Windows (au moins les versions que je pourrais tester)
  • Cela se produit sévèrement sur Firefox Linux (Ubuntu).

Est-ce que quelqu'un a déjà eu ce problème? Si oui, que pouvons-nous faire pour le résoudre?

Voici un exemple de code pour une meilleure compréhension:

$('#btCatA').click(function() { 
    $('#btCatA').toggleClass('selec'); 
    $('#listcatA').slideToggle('slow', function() { 
     // ... 
    }); 
}); 

Répondre

1

Vous pourriez probablement empêcher cela en diminuant la propriété scrollTop de l'objet window par la hauteur de cet élément avant vous faites glisser vos éléments de la liste. jQuery a une méthode pour cela: .scrollTop(). Vous pouvez animer cela, aussi, pour qu'il soit un peu moins rapide. Le code suivant (non testé) devrait faire l'affaire:

var toggleClass = 'selec'; 

$('#btCatA').click(function() { 
    var target = $(this), 
     listElement = $('#listcatA'); 

    if (target.hasClass(toggleClass)) { 
     target.removeClass(toggleClass); 
     $(window).animate({ 
      scrollTop: '-='+listElement.height()+'px' 
     }, 'slow', function() { 
      listElement.slideUp('slow'); 
     }); 
    } else { 
     target.addClass(toggleClass); 
     listElement.slideDown('slow'); 
    } 
}); 
+0

désolé pour cela, je l'ai juste mis à jour ma question Pouvez-vous s'il vous plaît jeter un oeil, et, si elle est toujours valable, point où cette .scroolTop devrait être mis? thks beaucoup.ps- l'élément est construit dynamiquement (php), donc, il n'y a pas de hauteur fixe. – MEM

+0

@MEM: Vous devez faire ce 'scrollTop'-chose avant de glisser. Placez l'action de diapositive dans le rappel de votre animation 'scrollTop' (glisser vers le haut seulement, glisser vers le bas devrait être manipulé séparément). – jwueller

+0

@elusise: laissez-moi être honnête. Je ne peux pas. Je ne suis pas sûr où coder cela. Vous avez dit l'endroit, callback de mon scroolTop, ok ... mais que dois-je écrire sur scroolTop? Je suis perdu. désolé, assez novice ici. : s – MEM