我的情况非常简单,我只是试图将数据存储到appended
中DOM
动态的元素中。我的问题是,每当我尝试通过立即appended object
检索数据时,该值返回正常,但通过click
事件通过on
函数返回的对象,它返回{ {1}}。我之前搜索过这个,但是stackoverflow中的人只是建议删除骆驼外壳等。这对我的情况没有帮助。任何建议或修复都会更有帮助。
我的代码:
undefined
小提琴:
答案 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'));
});
});
非常奇怪,但如果你这样做,它似乎工作正常。
答案 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');
由于