我有以下代码,我在 li 元素上设置了一些任意数据
function showCountries( data )
{
for( var i in data )
{
var li = document.createElement('li');
$(li).html( '<a>' + i + '</a><span>></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/