从动态元素中检索数据时,jQuery.data()返回'undefined'

时间:2013-07-10 17:57:46

标签: javascript jquery

我的情况非常简单,我只是试图将数据存储到appendedDOM动态的元素中。我的问题是,每当我尝试通过立即appended object检索数据时,该值返回正常,但通过click事件通过on函数返回的对象,它返回{ {1}}。我之前搜索过这个,但是stackoverflow中的人只是建议删除骆驼外壳等。这对我的情况没有帮助。任何建议或修复都会更有帮助。

我的代码:

undefined

小提琴:

Here

3 个答案:

答案 0 :(得分:4)

jQuery.data()采用原始DOM元素,而不是jQuery对象。

您需要直接传递this,或调用实例方法($(this).data()

答案 1 :(得分:1)

$(document).ready(function(){
    xElement = $('<li class="test">click this (because this contains data)</li>').appendTo('ul');
    xElement.data("val","value1");
    //retrieving data from immediate object
    alert(xElement.data('val'));
    $(document).on('click','ul li',function(){ 
        //retrieving data through object from 'on'
        alert($(this).data('val')); 
    });
});

非常奇怪,但如果你这样做,它似乎工作正常。

FIDDLEMETHIS

答案 2 :(得分:0)

谢谢你DevlshOne,这开始让我有点头疼 - 我不能投票或评论,因为我没有足够的声誉。

但是如果有人正在使用数据表,这解决了任何隐藏值的问题(因为默认表只显示1- 10),并且你无法从11 +访问数据attr,因为它们之后会动态生成。

旧代码

$('.userId').on('click', function(){ var userId = $(this).data('id');

新代码

$(document).on('click', 'td', function(){ var userId = $(this).data('id');

由于