请考虑以下代码。
function createItem(text,event_name, event){
var rd = Math.floor(Math.random()*10000000000);
var item = jQuery('<div/>')
.css({'padding':padding+'px','cursor':'pointer'})
.attr({'id':rd});
jQuery('#selectarea').append(item);
item.text(text).on(event_name, event);
return jQuery('#selectarea').find('#'+rd);
}
...
...
var video = createItem(v, 'click', function(){
console.log(jQuery(this)); // (1)
console.log(jQuery(this).data('path')); // undefined
});
jQuery.data(video, 'path', v); // (2)
我有一个createItem
方法,它只是生成负责记录项的DOM元素。我需要DOM来记忆一些数据,所以我使用jquery的data
方法。
但是,似乎返回的DOM与点击事件触发期间this
所指的内容不同,即使我确信它们在日志记录(1)和(2)中是相同的。
答案 0 :(得分:1)
jQuery.data()
将原生DOM节点作为第一个参数,而不是jQuery对象,所以要么
jQuery.data(video.get(0), 'path', v);
或者为什么不
video.data('path', v);