Search code examples
javascriptjqueryjquery-uisliderjquery-ui-slider

jQuery-ui slider - How to stop two sliders from controlling each other


This is in reference to the question previously asked

The problem here is, each slider controls the other. It results in feedback.

How do I possibly stop it?

$(function() {
    $("#slider").slider({ slide: moveSlider2 });
    $("#slider1").slider({ slide: moveSlider1 });
    function moveSlider2( e, ui ) 
    {
        $('#slider1').slider( 'moveTo', Math.round(ui.value) );
    }

    function moveSlider1( e, ui ) 
    {
        $('#slider').slider( 'moveTo', Math.round(ui.value) );
    }
});

Solution

  • This is sort of a hack, but works:

    $(function () {
        var slider = $("#slider");
        var slider1 = $("#slider1");
        var sliderHandle = $("#slider").find('.ui-slider-handle');
        var slider1Handle = $("#slider1").find('.ui-slider-handle');
    
        slider.slider({ slide: moveSlider1 });
        slider1.slider({ slide: moveSlider });
    
        function moveSlider( e, ui ) {
            sliderHandle.css('left', slider1Handle.css('left'));
        }
    
        function moveSlider1( e, ui ) {
            slider1Handle.css('left', sliderHandle.css('left'));
        }
    });
    

    Basically, you avoid the feedback by manipulating the css directly, not firing the slide event.