Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问HTML5数据属性_Javascript_Jquery_Html_Attributes_Jquery Easyui - Fatal编程技术网

Javascript 访问HTML5数据属性

Javascript 访问HTML5数据属性,javascript,jquery,html,attributes,jquery-easyui,Javascript,Jquery,Html,Attributes,Jquery Easyui,我正在尝试使用HTML5数据-*属性。 然而,我使用的是EasyUI框架,它存在问题 HTML5定义选项设置如下: 但EasyUI强制执行它们的设置如下(无花括号): 有没有一种方法可以在不编写自己的解析器函数的情况下访问属性对象?如果我必须的话,我必须,但我想一定有更好的办法 感谢您的帮助。查看源代码,有一种方法可以做到这一点 $.parser.parseOptions(element); 仅使用提取的方法进行演示: 注意:此方法没有文档记录,因此可能会更改,恕不另行通知。如果您知道它将

我正在尝试使用HTML5数据-*属性。 然而,我使用的是EasyUI框架,它存在问题

HTML5定义选项设置如下:

但EasyUI强制执行它们的设置如下(无花括号):

有没有一种方法可以在不编写自己的解析器函数的情况下访问属性对象?如果我必须的话,我必须,但我想一定有更好的办法


感谢您的帮助。

查看源代码,有一种方法可以做到这一点

$.parser.parseOptions(element);
仅使用提取的方法进行演示:


注意:此方法没有文档记录,因此可能会更改,恕不另行通知。

如果您知道它将始终被格式化为对象,您可以:

jsonData = JSON.parse("{" + element + "}");

仅供参考,你真的不必做所有的解析。虽然您的HTML确实需要在引号中进行一些更改:

HTML


第一步:向EasyUI提交一个bug。第二步:将属性设置为有效的JSON,以便进行解析。这两种形式都不是有效的JSON,因此您必须编写自己的解析器。您可以使用jQuery.data()或.attr()访问自定义属性@epascarello:不幸的是,这似乎是他们框架的“功能”。@Jay:是的,我知道这一点,但我的问题与数据格式不符合预期有关。标准函数无法处理格式。这不起作用,即使使用括号,它仍然是无效的json。这正是我想要的。工作完美。非常感谢你!我同意,将数据修复为正确的json,但如果不修改easyui内核(这其实并不难,tbh),这不是一个选项。我仍然认为jQueryUI是它的100倍,而且更有益。
<div id="Bob" data-options='{"region":"north", "title":"North Region", "border":"true"}'></div>
console.log($("#Bob").data("options").title);
// Will return String "North Region"

console.log($("#Bob").data("options").region);
// Will return String "north"

console.log($("#Bob").data("options").border);
// Will return String "true"

console.log($("#Bob").data("options")
// will return a JSON Object but it is EASY to convert to Array
var eleData = $("#Bob").data("options"),
    eleArray = new Array();
for (x in eleData) { eleArray[x] = eleData[x]; }