什么是"数据()"在JQuery?

时间:2014-04-04 18:00:18

标签: jquery kendo-ui

(这花了我很长时间来调试,所以我试图了解更好的情况。)

为什么第一行有效,第二行没有?

$("#cardType").data('kendoComboBox').value(newValue);
$("#cardType").val(newValue);

什么是.data(' kendoComboBox')究竟在做什么?

console.log($("#cardType").data('kendoComboBox') )返回:

Object { ns=".kendoComboBox", element={...}, _events={...}, more...}    

1 个答案:

答案 0 :(得分:2)

没有为jQuery对象定义value()个方法 - 它是.val()。只有在inputtextarea等上使用表单元素才有意义。

但是有.data()方法允许存储与匹配元素相关联的任意数据。当与单个参数一起使用时,它是一个getter - 它可以返回先前由给定键存储的任何对象。

显然,$("#cardType")元素附加了Kendo UI combobox小部件。附加时,此小部件将对自身的引用存储在元素的数据集中 - 这是小部件的常见行为;实际上,jQuery UI使用相同的方法。

如果元素用一些组合框的可视化表示包装,它将不再显示给用户 - 因此不会公开任何直接设置其值的尝试。应该使用的是组合框小部件的.value()方法(doc)。这就是为什么第二个片段不起作用 - 它实际上已经改变了这个值,但是没有让小部件知道它。