jquery - 如何在每个循环中的 Html 标签中存储任意数据?

标签 jquery

我想将数据存储在Li内部,以便在单击时显示它。 我使用了 Data 属性,但它只存储类型...而不是对象本身...所以它正在做类似的事情

  <li data="[object][object]">

这是我到目前为止所做的:

var data_obj = [{
  name: "foo",
  age: 33
}, {
  name: "goo",
  age: 34
}];

var tmp = '<ul id="list">';
var count = 0;

$.each(data_obj, function() {

  count++;
  tmp += '<li data="' + this + '">' + count + '</li>';
});

$('#res').html(tmp + '</ul>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="res"></div>

我的目标是能够在被点击时获取李的数据....谢谢

最佳答案

不要连接 html,而是构建它并为数据中的每个键/值添加单独的 data 元素:

var data_obj = [{
  name: "foo",
  age: 33
}, {
  name: "goo",
  age: 34
}];

var count = 0;
var lis = [];
$.each(data_obj, function() {

   var $li = $('<li />');
   $.each(this, function(k,v){
      $li.data(k,v);
   })
  count++;
  $li.text(count)
  lis.push($li)
});

$('#res').append($('<ul>').append(lis))
$('ul li').on('click',function(){
   console.log($(this).data('name') + ":" + $(this).data('age'))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="res"></div>

关于jquery - 如何在每个循环中的 Html 标签中存储任意数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427511/

相关文章:

jQuery 将 div 悬停在另一层下方

jquery - 使用 jQuery .appendTo 后执行 CSS3 动画

javascript - Bootstrap multiselect 在实例化时选择所有选项

Javascript (jQuery) 无法使用点击器计数器重新附加

jquery - 使用 jQuery 将数据列表存储在 cookie 中

jquery - 为什么我的 jQuery 下拉列表在我悬停时会隐藏?

jquery - 如何从 Angular 2 组件调用 jstree On 函数

jquery - 如何在响应式设计中定义高度

javascript - 当选择文件时,Jquery 显示一个或多个文件名

jquery $(this) 返回 [object object] 而不是 DOM 引用