8

我想将滑块范围的最大值嵌入到 html 数据参数中。我做了一些调试,尽管数据可以访问并且是一个数字,但滑块仍将使用默认的最大值 100。

我的 HTML:

<div class="slider" data-max="10"></div>
<label for="slider_value">Slider Value:</label>
<input type="text" id="slider_value" />

我的Javascript:

$(document).ready(function () {
    $("div.slider").slider({
        min: 0,
        max: $(this).data("max"),
        slide: function (event, ui) {
            $("input#slider_value").val(ui.value);
        }
    });
});

看到这个小提琴

4

2 回答 2

7

当参数 objectslider()被评估时,this是对该对象的引用document,而不是div.slider. 您需要div.slider再次查找或保存对它的引用(demo):

$(document).ready(function () {
    var div = $("div.slider");
    div.slider({
        min: 0,
        max: div.data("max"),
        slide: function (event, ui) {
            $("input#slider_value").val(ui.value);
        }
    });
});
于 2013-02-07T09:12:09.993 回答
3

使用带有方法的 jQuery UIcreate事件option动态设置选项:

$(document).ready(function() {
    $('div.slider').slider({
        min: 0,
        create: function(event, ui) {
            $(this).slider('option', 'max', $(this).data('max'));
        },
        slide: function(event, ui) {
            $("input#slider_value").val(ui.value);
        }
    });
});

于 2014-10-30T21:24:33.063 回答