jquery - 使用jqSlider和knockout js实现滑动事件

标签 jquery knockout.js

我有一个像这样的绑定(bind)处理程序:

ko.bindingHandlers.percentageSlider = {
init: function (element, valueAccessor, allBindingsAccessor) {
    var options = allBindingsAccessor().percentageSliderOptions || {};
    $(element).slider(options);
    ko.utils.registerEventHandler(element, "slidechange", function () {
        var observable = valueAccessor();
        observable($(element).slider("value"));
    });
    ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
        $(element).slider("destroy");
    });
    ko.utils.registerEventHandler(element, "slide", function () {
        var observable = valueAccessor();
        observable($(element).slider("value"));
    });
},
update: function (element, valueAccessor) {
    var value = lo.unwrap(valueAccessor());
    $(element).slider("value", value);

}
};

还有一个绑定(bind) slider 的模板,如下所示:

<tr>
    <td class="caption-cell">@Translate("EditProbability")</td>
    <td width="75%">
        <div style="float:left;" data-bind="percentageSlider: probability, percentageSliderOptions: {min: 0, max: 100, range: 'min', step: 10}"></div>
        <div style="float:left;margin:0 0 0 10px" data-bind="dynamicText: function(){ return probability() + '%'; }"></div>
    </td>
</tr>

处理程序动态文本如下所示:

ko.bindingHandlers.dynamicText = {
'update': function (element, valueAccessor) {
    var value = lo.unwrap(valueAccessor());
    if (typeof value === 'function') {
        value = value(element);
    }
    if ((value === null) || (value === undefined)) {
        value = "";
    }
    if (typeof element.innerText == "string") { element.innerText = value; }
    else { element.textContent = value; }
}
};

现在我的问题是 slider 有不规则的行为,有时我无法达到 100%,有时该值与应有的值相差几十个。如果我只单击 slider 一次,它总是会到达正确的位置。我希望在滑动 slider 时更新百分比,并且我还希望 slider 通过 knockout (使用更新事件)正确更新。我应该采取什么方法?感谢您的阅读。

最佳答案

这是一个工作的 jsFiddle:http://jsfiddle.net/jearles/yumLr/

您的问题是您需要使用: ui.value 来获取幻灯片和幻灯片更改事件处理程序中更新的句柄值。请注意更改的事件处理程序签名。

关于jquery - 使用jqSlider和knockout js实现滑动事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9513121/

相关文章:

knockout.js - 子对象的 KO 映射问题

javascript - 包括特定于 ASP.NET MVC4 View 或部分 View 的脚本

javascript - jQuery Framework 用于将评论附加到图像,例如 Facebook 或 Flickr

jquery - 数据表重新初始化时出错

javascript - 增加悬停尺寸而不改变其他元素的位置

knockout.js - validationOptions 不适用于自定义绑定(bind)处理程序

javascript - 框架如何在没有虚拟 DOM 的情况下更新 DOM?

php - 如何在复选框状态更改时更新 mysql 字段?使用 jquery (ajax)、php 和 mysql

javascript - 使用Javascript制作按钮,制作新的Javascript

javascript - 在IE浏览器中 knockout TR标签之间的虚拟元素