setData和changeData之间有什么区别吗?

时间:2011-11-09 21:07:55

标签: jquery

我认为这两个功能没有任何区别。

使用以下JavaScript代码:

var x = {};

$(x).bind({
  setData: function (event, key, value) {
    console.log("setData()", key, value);
  },
  changeData: function (event, key, value) {
    console.log("changeData()", key, value);
  }
});

$(x).data("key1", "alpha");
$(x).data("key1", "beta");
$(x).data("key2", "gamma");

...我在控制台中获得以下内容:

setData() key1 alpha
changeData() key1 alpha
setData() key1 beta
changeData() key1 beta
setData() key2 alpha
changeData() key2 alpha

每次事件都会发生。

2 个答案:

答案 0 :(得分:2)

在所有代码中调用的唯一地方是数据函数,一个在set之前调用,另一个在之后调用,但传入的值是相同的。

$this.triggerHandler( "setData" + parts[1] + "!", args );
jQuery.data( this, key, value );
$this.triggerHandler( "changeData" + parts[1] + "!", args );

答案 1 :(得分:1)

不是很大:

在设置数据之前触发

setData

设置数据后

changeData

请参阅jQuery/src/data.js