(这花了我很长时间来调试,所以我试图了解更好的情况。)
为什么第一行有效,第二行没有?
$("#cardType").data('kendoComboBox').value(newValue);
$("#cardType").val(newValue);
什么是.data(' kendoComboBox')究竟在做什么?
console.log($("#cardType").data('kendoComboBox') )
返回:
Object { ns=".kendoComboBox", element={...}, _events={...}, more...}
答案 0 :(得分:2)
没有为jQuery对象定义value()
个方法 - 它是.val()。只有在input
,textarea
等上使用表单元素才有意义。
但是有.data()方法允许存储与匹配元素相关联的任意数据。当与单个参数一起使用时,它是一个getter - 它可以返回先前由给定键存储的任何对象。
显然,$("#cardType")
元素附加了Kendo UI combobox小部件。附加时,此小部件将对自身的引用存储在元素的数据集中 - 这是小部件的常见行为;实际上,jQuery UI使用相同的方法。
如果元素用一些组合框的可视化表示包装,它将不再显示给用户 - 因此不会公开任何直接设置其值的尝试。应该使用的是组合框小部件的.value()
方法(doc)。这就是为什么第二个片段不起作用 - 它实际上已经改变了这个值,但是没有让小部件知道它。