Событие jQuery "Изменение" пользовательского интерфейса jQuery срабатывает, даже если значение не изменилось

Я пытаюсь запустить событие, когда пользователь скользит по ползунку, и значение изменяется при остановке скольжения. В соответствии с документами jQuery событие change было бы идеальным для этого случая. Поэтому я пробую это:

<!doctype html>
    <html lang="en">
        <head>
            <meta charset="utf-8" />
            <title>jQuery UI Slider - Default functionality</title>
            <link rel="stylesheet" href="#" onclick="location.href='http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css'; return false;" />
            <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>

Однако я наблюдаю, что когда я перетаскиваю ползунок вправо и снова перетаскиваю его обратно в исходную точку (начальное положение ползунка при загрузке страницы), предупреждение все еще срабатывает. Является ли это ошибкой jQuery? Если нет, как это исправить?

Ответ 1

$(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;
    });
});

Ответ 2

Просто попробуйте.

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