首先是data属性 - 虽然你可以使用.attr或.prop访问数据属性,但数据存储在页面加载后的对象$.cache中,并在此后进行操作。属性data-*永远不会更新。
要设置数据
$el.data('id', max.cid);
获取数据
var something = $el.data('id');
很遗憾,如果不使用先前在类似问题中探讨过的setInterval,则无法监听数据变化。
话虽如此,如果只有您的代码更新数据,那么一个合理的解决方案是:
设置一个事件
$el.on('datachange', function(){
});
然后在更新数据时触发它。
$el.data('id', max.cid).trigger('datachange');
或者编写自己的数据函数,使用 .data() 并触发事件。
$.fn.mydata=function(key, variable){
$(this).data(key, variable).trigger('datachange');
}
$el.mydata('id', max.cid);
Example: http://jsfiddle.net/Qn9H6/
$("#test").on('datachange', function(e, key){
$('#feedback').hide().text('data "' + key + '" was changed to ' + $(this).data(key)).fadeIn(1000);
});
$.fn.mydata=function(key, variable){
if ($(this).data(key)!=variable){
$(this).data(key, variable).trigger('datachange', key);
}else{
console.log('data wasn\'t changed');
}
}
$('button').click(function() {
$("#test").mydata('id', $(this).text());
})
$("#test").mydata('id', 456);
console.log(数据属性在这里);
吗? - Moduoconsole.log($(this.$el).data('id'));
并成功获取了正确的 data-id,但我不确定这有什么帮助? - Michael Joseph Aubry