2010-07-21 19 views

Respuesta

3

Devolverá el valor en cualquier caso que se haya configurado.

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

.

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

Si desea convertir a minúsculas, puede utilizar .toLowerCase().

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

Código de attr sentencias de retorno de jQuery (no Arden):

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

o

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

2

No, porque .attr llama al método JavaScript .getAttribute sin cualquier parámetro Como puede ver en el código de abajo.

getAttribute por defecto a 0, que no distingue entre mayúsculas y minúsculas, por lo que devuelve exactamente lo que encuentra.

 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; 
     }, 
0

jQuery no puede confiar en las búsquedas de atributos que distinguen entre mayúsculas y minúsculas y aún ser compatible con el navegador de varios navegadores. En el viejo IE DOM, recuerdo que todas las etiquetas y atributos se almacenan y devuelven en mayúsculas; por lo que la etiqueta <div id="mydiv"> se procesa internamente como <DIV ID=mydiv>. Por lo tanto, en Netscape o Firefox, el nombre del atributo sería id y en IE sería ID. Pero incluso con elementos creados dinámicamente, que se almacenan con el caso deseado, hay incoherencias dentro de IE. Por ejemplo, IE6 e IE8 se comportan de forma completamente diferente con getAttribute(). Compare:

<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" 
Cuestiones relacionadas