通过初始化获取句柄位置

get handle position by the initialization

我有以下 fiddle: http://jsfiddle.net/rojq0yun/

效果很好,#min div 的位置将在移动滑块时正确更新。

虽然我尝试在使用默认值初始化滑块时获得正确的位置。目前手柄位置正确但#min div 不正确。我试着查看 ui.handle 属性 但它似乎绑定到幻灯片事件:

$('#min').html(periods[ui.value])
         .position({
                          my: 'center top',
                          at: 'center bottom',
                          of: ui.handle,
                          collision: 'fit none'
                      });

这个可以查询句柄的位置吗?

编辑:我使用 $(this).find('.ui-slider-handle:first'); 查询句柄对象,然后将其用作 positionof 属性。当 运行 它并检查 div 的“左”属性 时,我得到 199.4px。来回移动手柄到原来的位置再检查,左边的属性就是210px。差异总是 10.6px。

这种差异从何而来?

已更新 fiddle 此处:http://jsfiddle.net/f4u1mphr/

考虑以下因素。

https://jsfiddle.net/Twisty/2djtpakb/11/

JavaScript

$(function() {

  var periods = ["2022-01", "2022-02", "2022-03", "2022-04", "2022-05", "2022-06", "2022-07"];
  var defaultValue = 3;

  function setMin(cnt, pos) {
    $('#min')
      .html(cnt)
      .position(pos);
  }

  $("#slider").slider({
    range: "max",
    min: 0,
    max: periods.length - 1,
    step: 1,
    value: defaultValue,
    slide: function(event, ui) {
      // wait for the ui.handle to set its position
      setTimeout(function() {
        setMin(periods[ui.value], {
          my: 'center top',
          at: 'center bottom',
          of: ui.handle,
          collision: 'fit none'
        });
      }, 1);
    }
  });

  setMin(periods[defaultValue], {
    my: 'center top',
    at: 'center bottom',
    of: $("#slider .ui-slider-handle")
  });
});

只是稍微清理了一下,将值的处理移到了一个函数中以便于赋值。