javascript - jquery动态添加的.data()在选择时未定义

标签 javascript jquery

我有以下代码,我在 li 元素上设置了一些任意数据

function showCountries( data )
{
    for( var i in data )
    {
        var li = document.createElement('li');
        $(li).html( '<a>' + i + '</a><span>&gt;</span>' );
        $(li).data('cargo', { state: data[i] });
        /* 
           right here, if I look at $(li).data('cargo').state in the debugger
           I see the data as expected
        */
        $('#countries').append( li );
        $(li).on('click', $.proxy( countrySelected, li ) );
    }
}

稍后,在选择的国家中,我想获取 cargo 数据。但是,它是未定义的

function countrySelected()
{
    var country = $(this).children('a').html();
    // country is what I expect

    var cargo = $(this).children('a').data('cargo');
    // cargo is undefined here

    // I tried this too:
    var cargo = $('#countries li.selected a').data('cargo');
    // cargo is undefined here as well
}

我做错了什么?这是加载页面后动态设置 .data() 的问题吗?

谢谢, 斯科特

最佳答案

这一行:

var cargo = $(this).children('a').data('cargo');

应该改成这样:

var cargo = $(this).data('cargo');

您在 li 元素中设置数据,而不是在子元素 a 中。

关于javascript - jquery动态添加的.data()在选择时未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12624428/

相关文章:

jquery - 使用jquery在<a>标签中插入 'rel'属性

javascript - 如何将值从 ng-click 传递到 ng-model?

javascript - 使用 JQuery 切换 div 可见性

javascript - 尝试使用 .split 创建函数,但得到 "split is not a function"

javascript - 使用 javascript 和 jquery 连接数组

javascript - 当删除一个克隆 div 时对克隆 div 重新编号

javascript - KnockoutJS 从组件中组装更新的数据

javascript - 使用 TypeScript 中的属性名称将 Map 转换为 JSON

javascript - 使用“添加更多表单”按钮创建多个表单

javascript - 单击时在每个列表项上弹出,具有减少代码编写的功能