jQuery UI 控件之Slider

项目需要,页面上增加了2个slider控件用于设置range和limit,用的是jQuery UI官方的Slider:



但是我没有直接使用他的代码,因为我觉得写的不是很好,所以我自己写了一下,没想到出现了一些问题,就是在鼠标拖拽的过程中,数值更新不正常:

function updateDateRange(event, ui) {
    var slider = event.target;
    var values = $(slider).slider("values");
    this.find(".amount-date-range-start").val(values[0]);
    this.find(".amount-date-range-end").val(values[1]);
    this.find(".date-range-desc").text("from week " + values[0] + " to week " + values[1]);
}

function updateRecordCountLimit(event, ui) {
    var slider = event.target;
    var val = $(slider).slider("value");
    this.find(".amount-record-count-limit").val(val);
    this.find(".record-count-limit-desc").text(val);
}

function initPanel(panel, id) {
    $('a[href="#{id}"]'.replace('{id}', id)).click();
    panel.find(".slider-record-count-limit").slider({
        range: "max",
        min: 1,
        max: 500,
        value: 25,
        create: _.bind(updateRecordCountLimit, panel),
        slide: _.bind(updateRecordCountLimit, panel),
    });

    panel.find(".slider-date-range", panel).slider({
        range: true,
        min: 1,
        max: 60,
        values: [1, 25],
        create: _.bind(updateDateRange, panel),
        slide: _.bind(updateDateRange, panel),
    });

经过一番调试,发现是slide消息响应函数即updateXXX,不应该使用slider("value")来获取值,而是应该通过ui.value来获取,将代码改写,就OK了:

function updateDateRange(event, ui) {
    var slider = event.target;
    var values = (ui && ui.values) ? ui.values : $(slider).slider("values");
    this.find(".amount-date-range-start").val(values[0]);
    this.find(".amount-date-range-end").val(values[1]);
    this.find(".date-range-desc").text("from week " + values[0] + " to week " + values[1]);
}

function updateRecordCountLimit(event, ui) {
    var slider = event.target;
    var val = (ui && ui.value) ? ui.value : $(slider).slider("value");
    this.find(".amount-record-count-limit").val(val);
    this.find(".record-count-limit-desc").text(val);
}

function initPanel(panel, id) {
    $('a[href="#{id}"]'.replace('{id}', id)).click();
    panel.find(".slider-record-count-limit").slider({
        range: "max",
        min: 1,
        max: 500,
        value: 25,
        create: _.bind(updateRecordCountLimit, panel),
        slide: _.bind(updateRecordCountLimit, panel),
    });

    panel.find(".slider-date-range", panel).slider({
        range: true,
        min: 1,
        max: 60,
        values: [1, 25],
        create: _.bind(updateDateRange, panel),
        slide: _.bind(updateDateRange, panel),
    });


转载于:https://www.cnblogs.com/puncha/p/3876891.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值