如何更改具有多个键值的自定义数据属性



我有一个DOM

<body id='bodeh' class="loading" data-layout-mode="horizontal" data-layout='{"mode": "light", "width": "fluid", "menuPosition": "fixed", "topbar": {"color": "light"}, "showRightSidebarOnPageLoad": false}'>

我想用Jquery将数据布局"模式"更改为深色。

任何帮助都将不胜感激。谢谢

使用jQuery的数据方法。例如

const val = $(document.body).data("layout");
val.mode = "dark";
$(document.body).data("layout", val);

看它在这里工作。

您似乎在data-layout中编写JSON,因此一种解决方案是将该JSON解析为一个对象,对其进行修改,然后字符串化并设置数据属性。我们可以为此编写一个简单的函数:

const useElemForData = (elem, dataAttr) => {
return {
setData(value) {
elem.dataset[dataAttr] = JSON.stringify(value);
},
getData() {
return JSON.parse(elem.dataset[dataAttr]);
}
};
};

现在,如果你想将其用于data-layout和身体,你可以这样做:

const layoutData = useElemForData($("body"), "layout");
layoutData.setData({ ...layoutData.getData(), mode: "light" });

最新更新