2010-07-21 6 views

Antwort

3

Es wird den Wert in welchem ​​Fall auch immer zurückgegeben.

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

.

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

Wenn Sie in Kleinbuchstaben konvertieren möchten, können Sie .toLowerCase() verwenden.

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

-Code für attr return-Anweisungen jQuery (nicht Sizzle):

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

oder

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

2

Nein, weil .attr ruft die Methode Javascript .getAttribute ohne irgendwelche Parameter. Wie Sie im folgenden Code sehen können.

getAttribute ist standardmäßig 0, was eine Groß-/Kleinschreibung nicht berücksichtigt, so dass es genau das zurückgibt, was es findet.

 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 kann nicht verlassen sich auf Groß- und Attributsuche und noch Cross-Browser-Browser kompatibel sein. Im älteren IE-DOM erinnere ich mich daran, dass alle Tags und Attribute in Großbuchstaben gespeichert und zurückgegeben werden. so wird das Tag <div id="mydiv"> intern als <DIV ID=mydiv> gerendert. In Netscape oder Firefox wäre der Attributname id und in IE wäre es ID. Aber auch bei dynamisch erstellten Elementen, die im gewünschten Fall gespeichert werden, gibt es nur innerhalb des IE Inkonsistenzen. Zum Beispiel verhalten sich IE6 und IE8 völlig unterschiedlich mit getAttribute(). Vergleich:

<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" 
Verwandte Themen