jQuery.attr()保证小写?

时间:2010-07-21 23:44:20

标签: jquery attributes

如果找到属性,$(selector).attr(name)是否保证结果为小写?

3 个答案:

答案 0 :(得分:3)

无论在何种情况下都会返回该值。

<div class="sOmEcLaSs">content</div>

alert( $('div').attr('class')​​​​ );​​​​  // will alert sOmEcLaSs

如果您想转换为小写,可以使用.toLowerCase()

alert( $('div').attr('class').toLowerCase() );​​​​  // will alert someclass

jQuery attr返回语句的代码(不是Sizzle):

http://github.com/jquery/jquery/blob/1.4.2/src/attributes.js#L308

http://github.com/jquery/jquery/blob/1.4.2/src/attributes.js#L325

答案 1 :(得分:2)

不,因为.attr调用没有任何参数的javascript .getAttribute方法。 正如您可以在下面的代码中看到的那样。

getAttribute默认为0,这是一个不区分大小写的,因此它会返回它找到的内容。

     ATTR: function(elem, match){
            var name = match[1],
                result = Expr.attrHandle[ name ] ?
                    Expr.attrHandle[ name ]( elem ) :
                    elem[ name ] != null ?
                        elem[ name ] :
                        elem.getAttribute( name ),
                value = result + "",
                type = match[2],
                check = match[4];

            return result == null ?
                type === "!=" :
                type === "=" ?
                value === check :
                type === "*=" ?
                value.indexOf(check) >= 0 :
                type === "~=" ?
                (" " + value + " ").indexOf(check) >= 0 :
                !check ?
                value && result !== false :
                type === "!=" ?
                value !== check :
                type === "^=" ?
                value.indexOf(check) === 0 :
                type === "$=" ?
                value.substr(value.length - check.length) === check :
                type === "|=" ?
                value === check || value.substr(0, check.length + 1) === check + "-" :
                false;
        },

答案 2 :(得分:0)

jQuery不能依赖区分大小写的属性搜索,仍然可以跨浏览器兼容浏览器。在旧的IE DOM中,我记得所有标签和属性都以大写形式存储和返回;因此标记<div id="mydiv">在内部呈现为<DIV ID=mydiv>。因此,在Netscape或Firefox中,属性名称为id,在IE中为ID。但即使动态创建的元素与所需的案例一起存储,IE中也存在不一致。例如,IE6和IE8与getAttribute()的行为完全不同。比较:

<div></div>

var myDiv = document.getElementsByTagName('div')[0];
myDiv.setAttribute('id','id1');
myDiv.setAttribute('ID','id2');
console.log(x.getAttribute('ID')); // IE6, return "id1", IE8, returns "id2"
console.log(x.getAttribute('ID',true)); // IE6, return "id2", returns "id2"