jQuery滑块“slide”事件:如何确定用户的滑动方向?

时间:2011-05-17 19:31:16

标签: javascript jquery jquery-ui

我一直在用萤火虫解剖事件和ui对象,但它似乎没有任何我可以使用的东西。我错过了什么吗?我想我可以跟踪价值变化,但这看起来像是一块污泥。

$(".selector").slider({
    slide: function(event, ui){
        // I need to tell if the slide is left-to-right or right-to-left here.
    }
}); 

谢谢! 杰森

3 个答案:

答案 0 :(得分:3)

对于每个想知道如何解决这个问题的人,我刚刚找到了解决方案:

开始使用包含幻灯片开头的两个全局变量。我的滑块始终从0开始并从左向右移动,因此第一个nexSlide将为1.现在您可以简单地比较两者以查看您滑动的方向。这种方法效率最高,因为它可以在不停止滑动的情况下检测方向变化。

   var currentSlide = 0; var nextSlide = 1;

   jQuery( "#slider" ).bind( "slide", function(event, ui) {
       currentSlide = jQuery('#slider').slider('value');
       nextSlide = ui.value;
    });

答案 1 :(得分:0)

如果您想获得方向(值减少或增加),请使用startslide事件。触发start事件时,将初始值存储在变量中。之后,只需将此存储值与滑动事件创建的值进行比较。

只需组合不同的活动。

编辑前:

使用documented getter

var orientation = $( ".selector" ).slider( "option", "orientation" );
  

此选项确定是否   滑块左边的分钟,   最大值在右边或最小值在   底部,最高位于顶部。可能   值:'水平','垂直'。

答案 2 :(得分:0)

简单的解决方案就是使用负范围(而不是[1 - 10]使用[-10,-1]:

        $("#slider-roomsrange").slider({
        range: true,
        min: -10,
        max: -1,
        step: -.5,
        values: [-3, -1],
        slide: function (event, ui) {
            $("#roomsfrom").val((ui.values[0]*-1));
            $("#roomsto").val((ui.values[1]*-1));
           // $("#rooms").val(ui.values[1] + " - " + ui.values[0]);
        }
    });

我正在通过使用* -1将值反转为正值,并使用gret。

*我现在唯一的问题是步骤为1而不是我预期的.5。