IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Défilement vertical avec la molette ne fonctionne pas


Sujet :

jQuery

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Par défaut Défilement vertical avec la molette ne fonctionne pas
    Salut, depuis presque 2 jours j'essaye de resoudre un problème Avec mon code.

    pour changer et spécialiser mon documemt, j'ai du utiliser le jquery.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="category">
    liste....
    </div>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $('.category').each(function(){
                var scrollPane = $(this).jScrollPane({
                    arrowScrollOnHover: false,
                    showArrows: true,
                });
                var api = scrollPane.data('jsp');
                console.log(scrollPane.data('jsp'));
                scrollPane.bind( 
                    'mousewheel',
                    function (event, delta, deltaX, deltaY) 
                    { 
                        api.scrollByY(50);
     
                        return false;
                    } 
     
                );
            });
    Je veux permettre le défilement vertical dans ce div et d'autres. ce qui n'était pas possible avant puisque c'est toute la page qui défilait.

    Avec ce code, dès que la main de ma souris se trouve sur mon div. la page ne défile plus, rien que le div. jusque là c'est bon.

    Mon problème est le suivant: ce code permet tout simplement le défilement vers le bas. Egal meme si je cherche à défiler vers le haut.
    Que dois je faire s'il vous plaît?
    je vois dans la fonction, delta, deltaX, deltaY. Où est ce que je les définis?

    J'ai trouvé ceci : http://www.adomas.org/javascript-mouse-wheel/
    mais je ne comprends rien. suis nouceau sur js.

    Je vous remercie pour plus d'éclaircissement et codes pour permettre le défilement tant vers le haut.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    je vois dans la fonction, delta, deltaX, deltaY. Où est ce que je les définis?
    tu ne les définis pas c'est le plugin qui te les met à disposition pour que tu puisses réagir en fonction de leur valeurs.

    Fait un petit console.log( delta) et observe le signe en fonction du déplacement réalisé à la molette.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Par défaut
    Merci.

    Comment changer le code afin que le défilement vers le haut puisse aussi être possible?

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    As tu eu la curiosité d'essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    api.scrollByY( delta * 50);

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Par défaut
    Salut NoSmoking,

    Citation Envoyé par NoSmoking Voir le message
    As tu eu la curiosité d'essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    api.scrollByY( delta * 50);
    oui je l'ai essayé. et il ne fonctionne pas. Même le défilement vers le bas ne se produit plus.
    Voici ce que la console me présente:

    handler(event=Object { originalEvent=Event DOMMouseScroll, type="mousewheel", timeStamp=2456516, mehr...})513e5d0...heel.js (Zeile 75)
    10
    0
    Quand j'utilise par contre

    Le défilement vers le bas est possible quelque soit l'orientation de ma molette.

    J'ai essayé de voir la valeur console.log( delta), console.log( deltaX) et console.log( deltaY);

    les 3 delta me présentent "0" égal l'orientation de la molette. Est ce normal? Je croyais que j'obtiendrais +1 si la molette est dirigée vers le bas et -1 si elle est dirigée vers le haut.

    y a t'il une erreur ds le code?

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    quelque soit l'orientation de ma souris
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Merci j'ai changé. je voulais parler de la mollette de souris et non de la souris elle même.

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Par défaut
    Salut,

    je pense avoir trouvé où se trouve mon problème. Quand je change mon code ainsi:
    alors le défilement s'effectute vers le haut et ce, égal la direction de la rolette. Je pense que mon code ne reconnait pas le delta.
    effectivement mon delta est toujours "0". Comment puis je resoudre ce problème?

    Il devrait être possible, d'écrire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    scrollPane.bind( 'mousewheel', function (event, delta, deltaX, deltaY){
        if (delta <0){
            api.scrollByY(-50); vers le haut
        }
        else{
            api.scrollByY(50); vers le bas
        }
        return false;
    });
    mais comment avoir les données de delta?

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Par défaut
    j ai pu resoudre mon problème.

    Il me fallait juste capter les valeurs de delta, ce que j'ai pu faire avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    event = event.originalEvent;
     
    var delta = event.wheelDelta>0||event.detail<0?1:-1;

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Par défaut
    salut une fois de plus.

    je viens de constater que mon scroll fonctionne très bien et est compatible à presque ts les browser. Mais Internet explorer ne fonctionne pas comme prévu. il scrolle seulement UNE fois et s'arrête. j'ai googelt et trouvé le event pour internet explorer:
    wheelDelta
    Comment l'insérer ds mon code afin que ce dernier puisque scroller sans interruption:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    event = event.originalEvent;
     
    var delta = event.wheelDelta>0||event.detail<0?1:-1;


    console.log(event.wheelDelta) donne

    120 ou -120
    et ce une fois, égal autant de fois je cherche à défiler le contenu du div que dois je faire pour maintenir le défilement ?

    merci d'avance!

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    J'ai un peu de mal à comprendre ta démarche, d'abord tu passe par un plugin pour t'affranchir des navigateurs et ensuite tu reviens au vanilla pour te compliquer la vie.

    Pour IE, Chrome et Opéra il faut diviser par 120, pour FireFox diviser par 3, mais tous ceci est expliqué dans le lien que tu as indiqué Mouse wheel programming in JavaScript (la référence en la matière).

    Sinon en regardant la documentation du plugin on trouve cette démo intéréssante et qui pourrait te convenir pour peu que nous soyons au courant de ce que tu souhaites vraiment faire.

  12. #12
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Par défaut
    ca fonctionne. Le problème était mon jquery. Je devais télécharger l'actuel.

    merci NoSmoking.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/06/2007, 18h45
  2. Réponses: 2
    Dernier message: 01/05/2007, 18h50
  3. Formulaire avec pièce jointe ne fonctionne pas
    Par Icesik dans le forum Langage
    Réponses: 6
    Dernier message: 08/02/2007, 14h55
  4. simple select avec date, mais ne fonctionne pas
    Par ralcoc dans le forum Oracle
    Réponses: 5
    Dernier message: 03/07/2006, 22h59
  5. Erreur avec le SaveDialog!Ne fonctionne pas!
    Par ghan77 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 25/01/2006, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo