2015-02-23 83 views
1

我有这个价格滑块,我希望它在滑块更改后运行某个功能。我想在滑块上更改时运行函数filterBy。jQuery,更改运行功能

filterBy功能

<script> 
function filterBy() { 
$('.searchtable').addClass('hide'); 
$('.spinner').removeClass('hide'); 

$.ajax({ 
     type: 'GET', 
     data: {'name':'<?php echo strval($_GET['name']); ?>','arrival':'<?php echo strval($_GET['arrival']); ?>','departure':'<?php echo strval($_GET['departure']);?>','guests':'<?php echo strval($_GET['guests']);?>','minRate':$("#amount").val($("#slider-range").slider("values", 0),'propertyCategory':$("#hotelType input[type='checkbox']:checked").val(),'minStarRating':$("#hotelRating input[type='checkbox']:checked").val(),'amenities':$("#hotelAmenities input[type='checkbox']:checked").val()}, 
     url: '<?php echo $baseUrl ?>/hotels/hotelFilterResult.php', 


     success: function (data) { 
      alert('data loaded succesfully'); 
      alert(this.url); 

      $('.searchtable').replaceWith(data); 
      $('.spinner').addClass('hide'); 
      $('.searchtable').removeClass('hide'); 

     }, 
     error: function (xhr) { 
      alert('data not loaded'); 
     } 
    }); 

} 
</script> 

功能的滑块:

<script> 
$(function() { 
$("#slider-range").slider({ 
    range: true, 
    min: 0, 
    max: 5000, 
    values: [ 500, 2000 ], 
    slide: function(event, ui) { 
    $("#amount").val(ui.values[ 0 ] + " kr" + " - " + ui.values[ 1 ] + " kr"); 
    }, 
    change: function(event, ui) { 
    filterBy(); 
} 
}); 
$("#amount").val($("#slider-range").slider("values", 0) + " kr" + 
    " - " + $("#slider-range").slider("values", 1) + " kr"); 
}); 
</script> 

我想在改变运行功能是filterBy() 我该怎么办呢?

回答

1

要听slidechange事件中,你需要提供change配置选项滑块:

$("#slider-range").slider({ 
    range: true, 
    min: 0, 
    max: 5000, 
    values: [500, 2000], 
    slide: function (event, ui) { 
     $("#amount").val(ui.values[0] + " kr" + " - " + ui.values[1] + " kr"); 
    }, 
    change: function(event, ui) { 
     filterBy(); 
    } 
}); 

另外,您可以explicetly绑定到这个事件:

$("#slider-range").on("slidechange", function(event, ui) { 
    filterBy(); 
}); 
+0

我只是在我的答案中加了'change'方法,但是你之前发布了我完成,+1,它可能比OP所寻找的更多,而不是滑动时连续触发的“幻灯片”处理程序。 – adeneo 2015-02-23 15:28:47

0

使用.change

$("#slider-range").change(function(){ 
    filterBy(); 
}); 
0
$("#slider-range").change(filterBy()); 
            ^^ 

有你的问题。这些相互矛盾的执行filterBy函数并将结果filterBy传递到更改函数(如果您没有return任何东西,可能是undefined)。你想要的是直接通过filterBy功能的change()功能,像这样:

$("#slider-range").change(filterBy); 

function filterBy(event) { 
    // do stuff when the slider changes 
}