2010-07-21 28 views

Trả lời

3

Nó sẽ trả về giá trị trong bất kỳ trường hợp nào được đặt.

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

.

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

Nếu bạn muốn chuyển sang chữ thường, bạn có thể sử dụng .toLowerCase().

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

Mã cho attr báo cáo lợi nhuận của jQuery (không Sizzle):

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

hoặc

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

2

Không vì .attr gọi phương thức javascript .getAttribute không có bất kỳ thông số nào. Như bạn có thể thấy trong mã dưới đây.

getAttribute mặc định là 0 không phân biệt dạng chữ sao cho nó trả về chính xác những gì nó tìm thấy.

 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 không thể dựa vào tìm kiếm thuộc tính phân biệt chữ hoa chữ thường và vẫn tương thích với trình duyệt qua trình duyệt. Trong IE DOM cũ hơn, tôi nhớ rằng tất cả các thẻ và các thuộc tính được lưu trữ và trả về trong trường hợp trên; do đó, thẻ <div id="mydiv"> được hiển thị nội bộ dưới dạng <DIV ID=mydiv>. Vì vậy, trong Netscape hoặc Firefox, tên thuộc tính sẽ là id và trong IE, nó sẽ là ID. Nhưng ngay cả với các yếu tố được tạo động, được lưu trữ với trường hợp mong muốn, có những mâu thuẫn trong IE. Ví dụ, IE6 và IE8 hoạt động hoàn toàn khác với getAttribute(). So sánh:

<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" 
Các vấn đề liên quan