滑块在较新版本的 jquery/ui 中无法正常工作

slider not working correctly in newer versions of jquery/ui

我有以下 2 个小提琴:

http://jsfiddle.net/uxp56hL0/ 这个正在使用 jquery 3.6.0 和 jquery ui 1.13.1

http://jsfiddle.net/34oqnmca/2/ 这个正在使用 jquery 1.6.2 和 jquery ui 1.8.4

第二个工作正常,第一个(然后是较新的版本)没有。我收到错误: Uncaught TypeError: raw is undefined

新版本中是否存在导致此行为的重大变化?我试图寻找 1.6 和 3.6 之间的一些变化(我承认这是巨大的飞跃)但没有运气......

我怀疑您的 CDN 有一些奇怪的库,或者它们没有正确链接。我对 Fiddle 做了一些小改动,它工作正常。

示例:https://jsfiddle.net/Twisty/eobnxvza/8/

JavaScript

$(function() {
  var myarray = ['2022-01', '2022-02', '2022-03', '2022-04', '2022-05', '2022-06', '2022-07', '2022-08', '2022-09', '2022-10', '2022-11', '2022-12']

  $("#slider").slider({
    range: true,
    min: 0,
    max: 11,
    step: 1,
    values: [4, 5],
    slide: function(event, ui) {
      var delay = function() {
        var handleIndex = ui.handleIndex;
        var label = handleIndex == 0 ? '#min' : '#max';
        $(label).html(myarray[ui.value]).position({
          my: 'center top',
          at: 'center bottom',
          of: ui.handle,
          offset: "0, 10"
        });
      };

      // wait for the ui.handle to set its position
      setTimeout(delay, 5);
    }
  });

  console.log('debug: ' + $('#slider').slider('values', 0));
  $('#min').html(myarray[$('#slider').slider('values', 0)]).position({
    my: 'center top',
    at: 'center bottom',
    of: $('#slider .ui-slider-handle:eq(0)'),
    offset: "0, 10"
  });

  console.log('debug: ' + $('#slider').slider('values', 1));
  $('#max').html(myarray[$('#slider').slider('values', 1)]).position({
    my: 'center top',
    at: 'center bottom',
    of: $('#slider .ui-slider-handle:eq(1)'),
    offset: "0, 10"
  });
});

我包装了它并调整了句柄的引用方式。当 运行 第 35 或 36 行出现 raw 错误。我解决了这个问题,但仍然无法从 CSS 正确加载。所以我把它切换到以下资源:

<link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>

现在可以正常使用了。