web-dev-qa-db-de.com

das jQuery UI-Schiebereglerereignis 'change' wird ausgelöst, auch wenn sich der Wert nicht geändert hat

Ich versuche, ein Ereignis auszulösen, wenn ein Benutzer den Schieberegler bewegt und der Wert geändert wird, wenn das Gleiten stoppt. Gemäß den jQuery-Dokumenten wäre das Ereignis change ideal für diesen Fall. Also probiere ich das aus:

<!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>

Ich beobachte jedoch, dass der Alarm immer noch ausgelöst wird, wenn ich den Schieberegler nach rechts und wieder zurück an den Startpunkt (die ursprüngliche Position des Schiebereglers beim Laden der Seite) ziehe. Ist das ein jQuery-Fehler? Wenn nein, wie kann ich das beheben?

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

Versuch's einfach.

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