web-dev-qa-db-fra.com

l'événement 'changer' du curseur jQuery UI se déclenche même lorsque la valeur n'a pas changé

J'essaie de déclencher un événement lorsqu'un utilisateur fait glisser le curseur et la valeur est modifiée lorsque le curseur s'arrête. Selon la documentation jQuery, le changeevent serait idéal pour ce cas. Donc j'essaye ceci:

<!doctype html>
    <html lang="en">
        <head>
            <meta charset="utf-8" />
            <title>jQuery UI Slider - Default functionality</title>
            <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
            <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
            <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
            <link rel="stylesheet" href="/resources/demos/style.css" />
            <script>
                $(function() {
                    $( "#slider" ).slider({
                        change:function() { alert("foo"); }
                    });
                });
            </script>
        </head>
        <body>
            <div id="slider"></div>
        </body>
    </html>

Cependant, j'observe que lorsque je déplace le curseur vers la droite et le ramène de nouveau au point de départ (la position initiale du curseur au chargement de la page), l'alerte est toujours déclenchée. Est-ce un bug de jQuery? Si non, comment puis-je résoudre ce problème?

13
SexyBeast
$(function() {
    $("#slider").slider();

    var startPos = $("#slider").slider("value");, 
        endPos = '';

    $("#slider").on("slidestop", function(event, ui) {
        endPos = ui.value;

        if (startPos != endPos) {
            // do stuff
        }

        startPos = endPos;
    });
});
17
isherwood

Juste essayer.

$(function() {
    $("#slider").slider({
        slide: function(event, ui) {
            // use ui.value to get a number
            // do your functions
        }
    });
});
0
Haroldo Torres