数据属性名称与数字

预计会是吗?

<div data-foo-42="bar"></div>

div div.data()将是一个空对象?

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

data-属性名称的要求是什么?

在jquery bug跟踪器中创建了一张票: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 );

         ....

另一个将数据attrib名称转换为上述地方使用的密钥,该密钥实际上将密钥转换为camelcase rdashAlpha = -([da-z]) ,第二个替换( .replace( rdashAlpha, fcamelCase ); )考虑分隔符后面的数字值是prev分隔符的一部分。 这可能是第二次冲刺后忽略数字的核心罪魁祸首。

camelCase: function( string ) {
        return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
    },

这里key变成foo42,而用rmultiDash替换它(这是/ [AZ] /)变成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

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

上一篇: Data attribute name with digits

下一篇: Format strings and using %n to overwrite memory address with specific value