来自“数据”的案例映射

如果你在一个元素上放置一个“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”形式可以用来获取数据。)

编辑 - 如果对于给定的元素, 尝试骆驼大小写形式之前通过虚线形式访问,那么它就可以工作(并且这告诉我这绝对是一个错误:-)


你是对的。 这个问题似乎与他们用于从camelCase转换为虚线的正则表达式有关。

rmultiDash = /([a-z])([A-Z])/g;

...在这里使用:

var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();

...导致:

data-image-xoffset

...代替:

data-image-x-offset

演示: http : //jsfiddle.net/TLnaW/

因此,当使用虚线版本时,当它查找一个属性时,它会发现它不需要转换,然后将camelCase版本添加到jQuery.cache的元素数据。

随后的尝试将继续工作,因为正确的camelCase现在在那里,所以它不再试图将它作为属性,因此不再需要错误的正则表达式。

链接地址: http://www.djcxy.com/p/88309.html

上一篇: case mapping from "data

下一篇: Javascript and CSS, using dashes