在.data方法中检测jquery对象

时间:2015-01-17 02:42:53

标签: jquery

请考虑以下代码。

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)中是相同的。

1 个答案:

答案 0 :(得分:1)

jQuery.data()将原生DOM节点作为第一个参数,而不是jQuery对象,所以要么

jQuery.data(video.get(0), 'path', v);

或者为什么不

video.data('path', v);