2012-01-28 28 views
10

Làm cách nào tôi có thể sử dụng jQuery để chọn một phần tử chỉ khi nó không có bất kỳ lớp nào?jQuery: Chọn một phần tử chỉ khi nó không có tên lớp

Tôi đang viết một trang cho phép tác giả html ghi đè hành động jQuery mặc định bằng cách thêm lớp vào phần tử. Nó sẽ là bất kỳ lớp học nào cả.

Vì vậy, đánh dấu có thể là:

<ul> 
    <li class="override"></li> 
    <li></li> 
</ul> 

Tôi muốn jQuery để chỉ chọn phần tử danh sách thứ hai bởi vì nó không có một lớp.

Tôi đã xem .hasClass(), nhưng có vẻ như yêu cầu tên lớp cụ thể.

Cảm ơn!

Trả lời

18

:not() Selector – jQuery API

$('li:not([class])') 
+0

Hoàn hảo! Điều này đã làm những gì tôi muốn. –

+0

Tôi rất vui được giúp đỡ. Bạn có thể chấp nhận câu trả lời của tôi bằng cách nhấp vào nút đánh dấu ở bên trái nếu đó là câu trả lời đúng cho câu hỏi của bạn :) –

2

này nên làm điều: $('li').not('li[class]')

+1

thứ hai 'loại li' chọn của bạn là không cần thiết. –

+0

Đúng. Và giải pháp của tôi cũng chậm hơn so với những người khác xD. Ít nhất tôi đã học được một cái gì đó mới ngày hôm nay – clime

+0

Bằng cách nào đó tôi nghĩ rằng bộ chọn duy nhất với: không thuộc tính sẽ chạy nhanh hơn này. Tôi đọc ở đâu đó rằng: không nhanh hơn rất nhiều. Không - tôi đoán rằng giải pháp không cần phải đi qua DOM hai lần. –

8

này nên làm điều đó:

$('li:not([class]),li[class=""]') 

Demo: http://jsfiddle.net/aMC5X/

Phần đầu tiên, li:not([class]) sử dụng "not selector" Wi th the "has attribute" để tìm bất kỳ phần tử li nào không có thuộc tính class.

Phần thứ hai, li[class=""] tìm thấy bất kỳ phần tử li nào có thuộc tính được đặt thành một chuỗi trống.

+0

Thú vị. Yếu tố thứ hai là để bao gồm trong "không có lớp" đặt những người có một tên lớp trống? Đó có lẽ là một ý tưởng hay - bạn không bao giờ biết. –

+0

Vâng, nếu bạn chơi với jsfiddle tôi đã cho bạn có thể thấy những gì xảy ra với và không có phần thứ hai và quyết định xem bạn cần nó trong tình huống của bạn (theo ý kiến ​​của bạn bạn _do_ cần nó). – nnnnnn

1

Bạn có thể sử dụng này:

if (!jQuery('li').hasClass('myClass') { 
    do something... 
} 
Các vấn đề liên quan