如果你在一个元素上添加了一个"data-"属性:
<div id='x' data-key='value'>
然后,您可以通过jQuery的".data()"方法获取该值:
alert($('#x').data('key')); // alerts "value"
该库使用一致的驼峰格式转换器将带有破折号的属性名进行转换:
<div id='x' data-hello-world="hi">
alert($('#x').data("helloWorld"));
驼峰式转换器是一个 jQuery “全局”函数:
alert($.camelCase("hello-world")); // alerts "helloWorld"
然而,当属性名称由一个被破折号包围的单个字母组成时,所有这些都会崩溃:
<div id='x' data-image-x-offset='50px'>
alert($('#x').data('imageXOffset')); // undefined
这有点奇怪,因为:
alert($.camelCase('image-x-offset')); // "imageXOffset"
那么问题出在哪里呢?我认为这可能与用于将已经驼峰命名的名称转换回破折号形式的机制有关。但是,我无法在代码中确定具体位置。
似乎在1.6.2和1.6.3中都是一样的。(顺便提一下,“image-x-offset”形式也可以用来获取数据。)
编辑 — 如果在尝试使用驼峰形式之前通过破折号形式访问给定元素,则它可以正常工作(这告诉我这肯定是一个bug :-)
$('#x').data('image-x-offset')
来获取数据。似乎不强制使用驼峰式命名法。看起来在 jQuery 1.7 中已经修复了,所以工作做得很好。 - zuallauz