2010-07-08 33 views
49

Yếu tố trông như thế này:jQuery - nhận lớp đầu tiên chỉ từ một yếu tố

<li class="blah active"> ... </li> 

jQuery.attr('class') sẽ trả lại cả hai lớp. Làm thế nào tôi có thể chỉ nhận được lớp 1 ('blah' trong trường hợp này) với jQuery?

+3

vấn đề là, rằng nếu bạn thêm/gỡ bỏ các lớp học qua jquery, nó sẽ không tiết kiệm theo đúng thứ tự của các mục. vì vậy có thể bạn muốn kiểm tra, nếu lớp đó nằm trong danh sách, thay vì lấy cái đầu tiên. – cRichter

+1

Nói chung, tôi sẽ không tin tưởng tất cả các trình duyệt để cung cấp lại cho bạn theo cùng thứ tự. –

Trả lời

109

Bạn cần phải split đó vào một mảng:

console.log(jQuery('selector').attr('class').split(' ')[0]); 
+1

Hoặc sử dụng regex: 'var first = $ ('# foo'). Attr ('class') .thay thế (/^(\ S *). * /, '$ 1'); ' – Pointy

+0

@Pointy: Yup, cảm ơn vì đã thêm điều đó. – Sarfraz

+0

tuyệt, hoạt động. cảm ơn: P – Alex

5
var first = jQuery.attr('class').split(" ")[0]; 
+0

và anh ta nói "' jQuery.attr ('class') 'sẽ trả về cả hai lớp", cho biết rằng bởi 'jQuery', anh ta có nghĩa là một thể hiện của đối tượng jQuery, không phải hàm contructor mà gọi' jQuery.fn.init' – galambalazs

Các vấn đề liên quan