jQuery.data()返回'未定义'当从动态元素检索数据时
jQuery.data() returns 'undefined' when retrieving data from dynamic elements
我的情况很简单,我只是尝试将数据存储到DOM
中动态appended
的元素中。我的问题是,每当我试图通过即时appended object
检索数据时,值都会返回良好,但通过click
事件通过on
函数返回的对象,它会返回undefined
。我早些时候搜索过这件事,但斯塔克夫弗洛的人只是被建议拆除骆驼套等。这对我的情况没有帮助。任何建议或修复都会更有帮助。
我的代码:
$(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')); });
});
A Fiddle:
此处
jQuery.data()
采用原始DOM元素,而不是jQuery对象。
您需要直接传递this
,或者调用实例方法($(this).data()
)
$(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
谢谢DevlshOne,这开始让我有点头疼——我不能给你投票或评论,因为我没有足够的声誉。
但是,如果有人使用数据表,这就解决了任何隐藏值的问题(因为默认表只显示1-10),并且您不能访问11+中的数据属性,因为它们是在之后动态生成的。
旧代码
$('.userId').on('click', function(){
var userId = $(this).data('id');
新代码
$(document).on('click', 'td', function(){
var userId = $(this).data('id');
感谢
相关文章:
- 将列表元素动态添加到ul元素中
- 将输入 html 元素动态关联到颜色选取器
- 媒体元素 - 动态加载音频
- 根据其内部元素动态更改 CSS
- 编写脚本以向元素动态添加.current(类似活动类)的场景
- 使用knockoutjs虚拟元素动态创建html部分
- 将JS中的元素动态添加到XUL中
- 如何从jquery中获得元素动态附加的完整表
- 使用jquery向li元素动态添加类
- 点击事件不't在尝试将元素动态添加到<ul>标签
- 使用Knockout.js Issue将元素动态添加到嵌套列表中
- 如何从DOM元素动态禁用popover
- 将样式元素动态插入DOM的最后一种跨浏览器方式
- 无法将元素动态添加到数组中
- 指令如何等待元素'动态插值属性被处理?
- 设置活动元素和非活动元素(动态)
- 是否可以使用JS/PHP为网页中的元素动态分配ID
- 如何制造<光>元素动态调整以填充浏览器窗口的整个宽度
- 基于页面元素动态构建菜单结构
- 向现有元素动态添加删除绑定