2011-02-22 76 views
5

我正在尝试使用HTML5数据属性并使用jQuery插件读取它们。使用jQuery元数据 - 无法读取HTML5数据属性

首先,在这种情况下DOCTYPE的问题? (我并不担心验证)

这里就是我想要做的事:

<ul id="quiz"> 
    <li data-career="math" class="first"> 
    <span>Question 1</span> 
    <input type="radio" name="question1" /> 
    <input type="radio" name="question1" /> 
    <input type="radio" name="question1" /> 
    </li> 
    <li data-career="science"> 
    <span>Question 2</span> 
    <input type="radio" name="question2" /> 
    <input type="radio" name="question2" /> 
    <input type="radio" name="question2" /> 
    </li> 
</ul> 

然后抛出一个错误(a is undefined)

$.metadata.setType("html5"); 
$(document).ready(function() { 
    var data = $("#quiz .first").metadata(); 
    console.log(data); 
}); 

此外console.log(data.career)没有按也不行。

我正在使用jQuery 1.4.2。

P.S.现在元数据是否包含在jQuery中?

回答

11

从1.4.3开始支持HTML 5 data attribute

从发行说明:

例如,给出下面的HTML:

<div data-role="page" data-hidden="true" data-options='{"name":"John"}'></div> 

以下jQuery代码将 工作的全部。

$("div").data("role") === "page"; 
$("div").data("hidden") === true; 
$("div").data("options").name === "John"; 
+0

太棒了 - 谢谢@Mark ...将在几分钟内接受。 – Marko 2011-02-22 21:11:54

+0

@Marko!这将在旧版浏览器中工作吗? – IsmailS 2011-04-20 09:40:10

+0

是的,我相信它适用于IE4 +,你所追求的任何特定的东西? – Marko 2011-04-20 20:33:27

3

您使用的太旧版本0.0.1:

在jQuery 1.4.3 HTML 5个数据 - 属性会自动 拉升到jQuery的数据对象。

用法:

$('#quiz .first').data('career'); 

对于元数据的插件,我不相信html5类型选项存在 - see API。我相信你想要的:

$.metadata.setType('attr', 'data-career'); 
+0

版本太旧0.0.1。什么是赔率+1 – Marko 2011-02-22 21:11:33

1

如果你不能够使用最新版本的jQuery(无论何种原因),你仍然可以用.attr()方法访问属性。

var data = $("#quiz .first").attr('data-career');