javascript - 无法访问存储在 jQuery 数据属性中的对象数组
问题描述
我有一个对象列表,每个对象都有一个配置列表。现在,我将它们存储在列表项中
dom = '<ul class="obj-list">';
for (let i = 0; i < obj.length; i++) {
dom += `<li
tabindex="${i}"
data-index="${i}"
data-resource-config="${obj[i].configs}"
现在,如果我尝试使用attr
它访问它们,它会说[object object]
.
当我单击ul
上面构建的时,我尝试从attr
$(e.currentTarget).attr('data-resource-config')
我究竟做错了什么 ?我不能在data-*
attr 中存储对象数组吗?
解决方案
您需要对对象进行字符串化以便将其存储在属性中:
dom = '<ul class="obj-list">';
for (let i = 0; i < obj.length; i++) {
dom += `<li
tabindex="${i}"
data-index="${i}"
data-resource-config="${JSON.stringify(obj[i].configs)}"
模板字符串尝试将内部数据${}
转换为字符串:
var obj = {
a: 5
};
$("div").html(`<span data-obj=${obj}>SPAN</span>`);
console.log($("span").attr("data-obj"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
var obj = {
a: 5
};
$("div").html(`<span data-obj=${JSON.stringify(obj)}>SPAN</span>`);
console.log($("span").attr("data-obj"));
console.log(JSON.parse($("span").attr("data-obj")));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
推荐阅读
- azure-ad-b2c - MSAL / MS Graph 代码适用于 .Net Core 3.1,但不适用于 .Net Framework 4.8
- node.js - 在 Nodejs 无状态下通过 twitter 进行身份验证
- python - 使用 Python docx 库阅读导航标题
- r - 将月份转换为跨越 4 年的连续数字
- python - OpenCV imdecode 不返回
- reactjs - redux saga 函数被调用两次
- swift - SwiftUI 拖动手势适用于父视图
- checkbox - 如何使用 alpinejs 对选中复选框的所有值求和
- java - Active Directory:在 java 中设置 ACE
- python - 如何将 PDF 与 python 合并,并在丢失某些文件的情况下使其运行?