3

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

我的代码:

$(document).ready(function(){

    xElement = $('<li class="test">click this (because this contains data)</li>').appendTo('ul');

    jQuery.data(xElement,"val","value1");

    alert(jQuery.data(xElement,'val'));

    $(document).on('click','ul li',function(){ alert(jQuery.data($(this),'val')); });
     });

小提琴:

这里

4

3 回答 3

4

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

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

于 2013-07-10T18:00:51.007 回答
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')); 
    });
});

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

小提琴手

于 2013-07-10T18:07:07.327 回答
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');

谢谢

于 2013-08-22T18:02:27.610 回答