javascript - jQuery UI 范围 slider 排序鼠标滚轮

标签 javascript jquery html

我在列表页面上使用范围 slider 对项目进行排序。我想使用鼠标滚轮功能对项目进行排序。如何在范围 slider 上使用鼠标滚轮?

<c:if test="${not empty facetData and facetData.name eq 'Price'}">
  <c:set var="minAmount" value="0"> </c:set>
  <c:forEach items="${facetData.values}" var="facetValue">
    <c:set var="maxAmount" value="${facetValue.code}"> </c:set>
  </c:forEach>

  <input type="hidden" id="sliderMinValue" value="${minAmount}" />
  <input type="hidden" id="sliderMaxValue" value="${maxAmount}" />
  <div class="price-range-bottom">
    <span>${minAmount}</span>
    <span>${maxAmount}</span>
  </div>
</c:if>
var sliderMinValue = parseInt($('#sliderMinValue').val());
var sliderMaxValue = parseInt($('#sliderMaxValue').val());

var minSelectedValue = sliderMinValue;
var maxSelectedValue = sliderMaxValue;

$("#slider-range-price").slider({
  range: true,
  min: sliderMinValue,
  max: sliderMaxValue,
  title: "dfsdf",
  values: [minSelectedValue, maxSelectedValue],
  slide: function(event, ui) {
    $("#range-price").val(currencyIso + " " + ui.values[0] + ".00" + " - " + currencyIso + " " + ui.values[1] + ".00");
    min = ui.values[0];
    max = ui.values[1];
    $("#amountMin").val(min);
    $("#amountMax").val(max);

    $(this).children("a.ui-slider-handle").first().html('<span class="slider-left-value">' + currencyIso + '&nbsp;' + min + '.00</span>');
    $(this).children("a.ui-slider-handle").last().html('<span class="slider-right-value">' + currencyIso + '&nbsp;' + max + '.00</span>');

  }

});

$("#range-price").val(currencyIso + " " + $("#slider-range-price").slider("values", 0) + ".00" + " - " + currencyIso + " " + $("#slider-range-price").slider("values", 1) + ".00");

});

$('#slider-range-price').mouseup(function() {
  var urlParams = new URLSearchParams(window.location.search);;
  if (location.href.indexOf('?') != -1) {
    var input = $("<input>").attr("type", "hidden").attr("name", "q").val(urlParams.get('q'));
    $('#advanceSearchFilter').append(input);
  }
  $('#advanceSearchFilter').submit();
});

我怎样才能将它应用到我的 slider 上?

最佳答案

要用鼠标滚轮移动 slider ,需要监听wheel事件。

要向上滚动以增加位置,您必须反转 deltaY 的符号。

要运行幻灯片功能,您需要按照说明进行一些拼图游戏 here .我最终做的是创建一个单独的函数,为 slidechange 调用,因为你不能触发 slide。然后在 wheel 处理程序中触发 change

function doSlide(event, ui)
{
  console.log('Put all the stuff you\'d want in the slide function in here');
}

$( function() {
    $('#slider').slider({slide: doSlide, change: doSlide});
    $('#slider').on('wheel', e => { 
      let s = $('#slider');
      let change = -e.originalEvent.deltaY;
      let value = s.slider('value');
      s.slider('value', value + change);
      s.trigger('change');
      e.preventDefault(); 
      return false;
    });
  } );
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div id="slider"></div>

关于javascript - jQuery UI 范围 slider 排序鼠标滚轮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56948495/

相关文章:

javascript - 如何从新创建的选项卡访问 Safari 扩展方法?

javascript - 无法使用@googlemaps/js-api-loader 生成 Nuxt 网站

javascript - 克隆或复制对象中的方法 (Javascript)

javascript - Flick IMG src 属性来模拟眨眼

html - 使用 HTML 在 Windows 8 应用程序开发中将背景更改为图像

html - 强制水平溢出

javascript - 用户代理,如何自动为不同的设备设置不同的 css 文件

javascript - 如何在 multiSelect 下拉 list 中将选项设置为强制/只读

jquery - 在 JQuery 中单击调用 ColdFusion 方法

javascript - Android Chrome 在我的 HTML5 网站上不断崩溃——如何调试它?