您的窗口小部件代码存在多个问题.我会试着总结一下:
1.复制数据
你没有复制data
到新创建的customDropbox
,所以之前
this.element.replaceWith(customDropbox);
你应该复制data
:
customDropbox.data(this.element.data());
现在,小部件将记住它已初始化.
这个元素消失了
后
this.element.replaceWith(customDropbox);
你应该更新,this.element
以便它指向新创建的customDropbox
:
this.element = customDropbox;
3. errorText消息采用错误的元素
由于小部件element(this.element
)现在指向该元素,因此该
errorText
函数必须稍微修改为:
this.element.find(".errors").html(text);
4. id应该是唯一的
现在,包装器 然后获取 边注 看到这个jsFiddle具有相同ID的ID在HTML中是不允许的,因此删除
标签上的那个.幸运的是,
可以在没有
for
属性的情况下工作,只需像这样写:
-element,
this.element.find("select")
在小部件中使用.`this.element` is already a jQuery element, so no need for the additional `$()` wrapping.