如果找到属性,$(selector).attr(name)
是否保证结果为小写?
答案 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"