Jquery 颜色选择器绑定(bind)处理程序创建多个 div

标签 jquery knockout.js color-picker

我正在尝试使用这个jquery color picker与 knockout .js。我已经编写了自定义 strip 处理程序来将颜色选择器输入控件与我的 viewModel 颜色值绑定(bind)。

这是绑定(bind)处理程序代码:

ko.bindingHandlers.colorPicker = {
init: function (element, valueAccessor, allBindingsAccessor) {

    //initialize datepicker with some optional options
    var options = allBindingsAccessor().colorPickerOptions || {};
    $(element).colorPicker(options);

    //handle the field changing
    ko.utils.registerEventHandler(element, "change", function () {
        var observable = valueAccessor();
        observable($(element).colorPicker("value"));
    });

    //handle disposal (if KO removes by the template binding)
    ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
        $(element).colorPicker("destroy");
    });

},
update: function (element, valueAccessor) {
    var value = ko.utils.unwrapObservable(valueAccessor());       
    $(element).colorPicker("value", value);        
}

和 HTML:

 <input type="text" data-bind="colorPicker: newEvent().color, colorPickerOptions: { value:newEvent().color }"/>

问题是,当我更改颜色时,每次更改颜色时都会创建多个 div,如图所示。

enter image description here

任何人都可以确定我的代码有什么问题吗?

最佳答案

这里是 jQuery ColorPicker 绑定(bind)处理程序的更新代码(与 Knockout.js 库一起使用)。

ko.bindingHandlers.jqColorPicker = {
  init: function (element, valueAccessor, allBindingsAccessor) {

    // set default value
    var value = ko.utils.unwrapObservable(valueAccessor());
    $(element).val(value);

    //initialize datepicker with some optional options
    var options = allBindingsAccessor().colorPickerOptions || {};
    $(element).colorPicker(options);

    //handle the field changing
    ko.utils.registerEventHandler(element, "change", function () {            
        var observable = valueAccessor();            
        observable($(element).val());                        
    });

    //handle disposal (if KO removes by the template binding)
    ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
        $(element).colorPicker("destroy");
    });

  },
  update: function (element, valueAccessor, allBindingsAccessor) {
    var value = ko.utils.unwrapObservable(valueAccessor());
    $(element).val(value);        
    $(element).change();        
  }
};

关于Jquery 颜色选择器绑定(bind)处理程序创建多个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12399892/

相关文章:

javascript - 自定义 Jquery 数据表参数

javascript - 数据如何绑定(bind)到 Kendo-Knockout ListView 中的元素?

javascript - knockout - ko.compated 使用 ko.isObservable 和 peek()

javascript - 如何将 JavaScript 对象复制到临时变量中,以便在更改属性后恢复原始对象?

jquery - 在 Twitter Bootstrap 的弹出窗口中使用 farbtastic colorpicker

javascript - 将列表向上/向下滚动到一个 div

jquery - 将自动完成列表中的国家/地区 Google map 限制为 “Australia”,但显示每一个

ios - 从另一个委托(delegate)类中检索 UIColor

javascript - 如何获得纯色背景色和半透明叠加色的有效结果(6位十六进制值)?

jquery - 单击使用 jquery 将类添加到 aspx linkbutton