使用jQuery读取不显眼的数据

时间:2012-10-22 14:44:35

标签: jquery unobtrusive

我没有找到如何使用jQuery读取不显眼的数据的任何示例。例如下面

<a id="deleteFile" href="" data="123">Delete file</a>

我想从元素中读取data属性。怎么做?

4 个答案:

答案 0 :(得分:3)

您应该使用data-*,其中*是您想要使用的密钥:

<a id="deleteFile" href="" data-file-id="123">Delete file</a>

然后你可以阅读:

$('#deleteFile').data('fileId');

您会注意到该属性已从file-id转换为fileId,这会自动发生以符合规范。还应该注意的是,jquery将尝试将值转换为其javascript本机类型。这意味着该访问的价值将是javascript Number而不是s字符串。如果您有一个前导0,并且因为01将被转换为1,则会产生影响。如果您明确需要将值作为字符串,请使用attr

$('#deleteFile').attr('data-file-id');

您还应该注意,使用attr时,您可以按原样提供完整的属性名称,而不仅仅是camelCase中的数据属性名称。

答案 1 :(得分:1)

最好的方法是获取元素属性

$('#deleteFile').attr('data');

如果你使用新的jquery库版本(高于1.6 i),你也可以使用jQuery的data() HTML5数据属性。将您的锚链接更改为

<a id="deleteFile" href="" data-fileid="123">Delete file</a>

然后你可以使用

$('#deleteFile').data('fileid');

但是不要互换使用它们,只能使用一种方法,否则稍后可能会出现问题,因为jQuerys data()只会读取数据属性,然后将它们存储在内部缓存中。如果您通过data()更改任何内容,则不会在实际标记属性中更改,data()attr()将在此后返回不同的结果

答案 2 :(得分:1)

最好像这样定义数据属性:

<a id="deleteFile" href="" data-id="123">Delete file</a>

然后你可以阅读它:

var id = $('#deleteFile').data('id');

在这种情况下使用attr并不是一个好主意。

答案 3 :(得分:0)

如果你想坚持你的编码,那么你可以试试这个

var a = $("#deleteFile").attr("data");

下载演示http://jsfiddle.net/Ht7Eg/3/