带数字的数据属性名称
Data attribute name with digits
是否期望
<div data-foo-42="bar"></div>
div div.data()
会是一个空对象吗?
演示:http://jsfiddle.net/nWCKt/
data-
属性名称有哪些要求?
在jquery错误跟踪器中创建了一个票证:http://bugs.jquery.com/ticket/14376
对我来说
似乎是一个jquery问题。当属性的连字符分隔符后面有一个数值时,替换键的正则表达式会导致问题(data-
的第一个连字符除外)。他们需要一种方法来识别在多破折号数据属性的属性之后开始的数值。
来自 jquery 的代码片段:
function dataAttr( elem, key, data ) {
// If nothing was found internally, try to fetch any
// data from the HTML5 data-* attribute
if ( data === undefined && elem.nodeType === 1 ) {
var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
data = elem.getAttribute( name );
....
另一个将数据属性名称转换为上述位置使用的键,该键实际上将键转换为驼峰大小写rdashAlpha = -(['da-z])
,第二个替换(.replace( rdashAlpha, fcamelCase );
)认为分隔符后面的数值是上一个分隔符的一部分。这可能是忽略第二个破折号后的数字开始的核心罪魁祸首。
camelCase: function( string ) {
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},
这里的键变成 foo42,当用 rmultiDash(即/[A-Z]/替换它时,变成 foo42,所以没有名称的属性data-foo42
而是data-foo-42
。我认为他们需要一些标识符(类似于哈希后第一个字符的键大写)来表示哈希之后的起始数字。
<div data-foo-42="bar" data-foo-tfs="tf"></div>
返回{fooYui: "bar"}
跳过第一个属性。
<div data-foo-d42="bar" data-foo-YUI="bar"></div>
返回{fooD42: "bar", fooYui: "bar"}
使用 jquery 1.10.1
相关文章:
- 序列化数据属性中对象的最可靠方法
- jQuery最近父级的数据属性选择器
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 数据属性仅在切换设备模式下工作
- 函数jquery.html()不提供数据属性集值
- 在数据属性上进行下拉自动选择
- JavaScript-获取数据属性的值返回未定义的值
- 如何替换数据属性中的特定字符串单词
- 使用数据属性将HTML数据复制到另一个元素
- 带有CSS的数据属性就没那么有用了
- 查找所有TD标签并读取其数据属性
- 使用jQuery获取第N个元素的数据属性值
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- 数据属性有没有更干净的方法
- 是否可以使用CSS分配数据属性
- 根据jquery数据属性值进行查询
- 如何使用 JavaScript 使自定义数据属性值成为数字
- 带数字的数据属性名称
- 使用.replace()在HTML5数据属性上存储jQuery $.data()检索到的数字时未捕获的TypeError
- 按数据属性排序列表项,先按字母顺序排序,然后按数字排序