javascript - 使用选择器再次调用 data() 时,动态创建元素并附加数据的 JQuery 不返回值?

标签 javascript jquery dynamic

我动态创建一个 div 元素并将 data() 与其关联。当通过选择器再次访问它时,它不会返回数据。作为下面代码片段的结果,我看到第一个警报的数据为“1”,另一个警报的数据为“null”值。有人可以帮忙吗?

var dc = 0;
$("#attachData").click(function () {
         dc++;
  var newDiv = jQuery('#oldid').clone();
  newDiv.attr('id', 'dt'+dc);
  jQuery.data(newDiv, "dd", '1')

   alert(jQuery.data(newDiv, "dd"));

 var divFromSelector = $('#dt'+dc);
 alert(jQuery.data(divFromSelector, "dd"));
});
<小时/>

抱歉,我没有将其添加到代码片段中,而是将其附加到树上:

newDiv.attr('id', 'dt'+dc).
appendTo('#workspace-container'); 

此外,当我尝试使用选择器访问它时,元素会正确返回 - 但找不到数据。

最佳答案

尝试:

var dc = 0;
$("#attachData").click(function () {
     dc++;
  var newDiv = jQuery('#oldid').clone();
  newDiv.attr('id', 'dt'+dc).appendTo('#workspace-container');
  jQuery.data(newDiv[0], "dd", '1')

  alert(jQuery.data(newDiv[0], "dd"));

  var divFromSelector = $('#dt'+dc);
  alert(jQuery.data(divFromSelector[0], "dd"));
});

来自the docs似乎 JQuery.data 方法需要 DOM 元素,而不是 JQuery 对象。将 [0] 附加到 JQuery 对象会给出它所包装的 DOM 元素。

如果您使用 newDiv.data(...)divFromSelector.data(...) 可能会更好。

演示 here .

关于javascript - 使用选择器再次调用 data() 时,动态创建元素并附加数据的 JQuery 不返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4466768/

相关文章:

Javascript 使用 "classList"更改按钮类 onclick

Javascript 使可见并在单击时添加多个 div-现在几乎可以工作

javascript - 用于使用 jquery 添加的内容中的链接的函数

使用事件处理程序生成 DOM 元素的 Javascript 外部函数不输出 html

algorithm - 寻找所有可能的最长递增子序列

android - 带有添加按钮的动态 View ,如何找到唯一的 edtxt ID 或其他任何东西

javascript - HTML5 拖放文件字段

单击不同的轨道时 JavaScript 开始新轨道

javascript - 悬停 I 标签更改其内部和之前的字体图标

javascript - 数据表 Javascript 链接在第二页上不起作用