2012-02-14 70 views
22

Tôi có một phần tử với nhiều lớp và tôi muốn lấy các lớp css của nó trong một mảng. Làm thế nào tôi sẽ làm điều này? Một cái gì đó như thế này:Làm thế nào để có được tất cả các lớp CSS của một phần tử?

var classList = $(this).allTheClasses(); 
+0

thể trùng lặp của [Get Lớp Danh sách cho phần tử với jQuery] (http://stackoverflow.com/questions/1227286/get-class-list-for-element-with-jquery) –

+0

bản sao là kết quả các truy vấn tìm kiếm khác nhau. Một số người sẽ google "Lấy danh sách lớp cho phần tử" và những người khác sẽ google "nhận được các lớp css của một phần tử". Tôi đã làm thứ hai, và những người khác cũng vậy. – frenchie

Trả lời

41

Không cần phải sử dụng jQuery cho nó:

var classList = this.className.split(' ') 

Nếu bạn vì một lý do muốn làm điều đó từ một đối tượng jQuery, hai giải pháp làm việc, quá:

var classList = $(this)[0].className.split(' ') 
var classList = $(this).prop('className').split(' ') 

Tất nhiên bạn có thể chuyển sang chế độ phát triển quá mức cần thiết và viết một plugin jQuery cho nó:

$.fn.allTheClasses = function() { 
    return this[0].className.split(' '); 
} 

Sau đó, $(this).allTheClasses() sẽ cung cấp cho bạn một mảng chứa tên lớp.

+0

ok, lý do tôi nghĩ rằng tôi cần phải làm điều này trong jquery là tôi đi qua một đối tượng jquery như tham số của hàm và sử dụng mã như thế này: var classList = TheObject.prop ('className'). Split (''); Nó hoạt động; đây có phải là cách tốt nhất để làm điều đó không? – frenchie

+0

Vâng, đó là cách tốt nhất. Plugin sẽ đẹp hơn nếu bạn sử dụng nó ở nhiều nơi trong mã của bạn. – ThiefMaster

+0

ok, cảm ơn mã. Tôi sẽ quay lại ý tưởng trình cắm nếu tôi cần sử dụng nó ở một vài nơi. – frenchie

6

này nên làm việc cho bạn:

var classes = $('div').attr('class').split(" "); 

này sẽ là giải pháp jQuery cho các giải pháp khác có câu trả lời khác!

3

Kiểm tra này ra:

var classes = $('selector').prop('classList'); 
7

Lưu ý rằng bạn cũng có thể sử dụng myElement.classList như một mảng đơn giản. This is supported by all major browsers for a while now, apart IE 9 and below.

+0

Thực ra classList không phải là mảng mà là [Danh sách mã thông báo Dom] (https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList) vì vậy hãy nhớ rằng bạn không thể sử dụng các phương thức mảng với nó đi thẳng. – Esko

0

function showClasses() { 
 
    const div = document.querySelector('div'); 
 
    const classes = div.className.split(' '); 
 

 
    const p = document.querySelector('p'); 
 
    p.innerHTML = classes; 
 
}
<div class="foo bar">This div has foo, bar classes</div> 
 
<p class='output'>Above div classes appear here</p> 
 
<button onClick="showClasses();">Show div classes</button>

HTML

<div class="foo bar">This div has foo, bar classes</div>

Vanilla JavaScript. Nó sẽ trả về một mảng các lớp.

const div = document.querySelector('div'); 
const classes = div.className.split(" "); // ['foo', 'bar'] 
Các vấn đề liên quan