2012-01-22 31 views
23

Tôi đang sử dụng hasClass() để xác minh trong câu lệnh if của tôi nếu một phần tử có một lớp nhất định. Làm thế nào tôi có thể kiểm tra trong báo cáo if của tôi nếu một yếu tố không có một lớp học nhất định? Cảm ơn bạn trước cho câu trả lời của bạn. Chúc mừng. Marc.Jquery đối diện với .hasClass()?

Trả lời

59

Tại sao không chỉ đơn giản là:

if (!el.hasClass ('foo')) 
{ 

} 
+0

Xin chào. Cảm ơn bạn đã trả lời nhanh chóng. Vì vậy, nó sẽ là nếu ($ (! '# Div'). HasClass ('foo'))? – Marc

+6

if (! $ ('# Div'). HasClass ('foo')) – sathia

+0

Cảm ơn tất cả .. – Marc

6
if (!element.hasClass('classname')) { 
    ... 
} 
+3

+1 đơn giản về LOL! –

18

Tổng quát hơn trong javascript, để kiểm tra trái ngược với kết quả boolean, sử dụng logic NOT hành !:

var isValid = false; 
if (!isValid) { 
    // execute if isValid = false; 
} 

Đối với câu hỏi của bạn, .hasClass() trả về boolean nếu phần tử có lớp được chỉ định, vì vậy nếu bạn có biểu thức:

<div class="someClass"></div> 

if ($('div').hasClass('someClass')) { 
    // will execute 
} 

để kiểm tra nếu nó không có lớp rằng:

if (!$('div').hasClass('someClass')) { 
    // will not get here because our element has the class "someClass" 
} 

Khi lựa chọn các yếu tố, nếu bạn muốn tránh những người có một lớp nhất định, bạn có thể sử dụng pseudo-selector :not():

$('div:not(.someClass)') 

About the :not() selector

+0

Merci Didier pour le détail. – Marc

+0

Có một cách khác để thực hiện việc này. Nếu bạn muốn loại bỏ các phần tử khỏi một bộ sưu tập hiện có, bạn có thể sử dụng '.not()' (xem http://api.jquery.com/not/). Ví dụ: '$ ('. Book p'). AddClass ('referenceable'). Không phải ('. Aside'). AddClass ('numbered');' – Shawn

0

Để sử dụng chaning, bạn ca n sử dụng bộ lọc.

$(...some selector...).filter(function(){ 
    return !$(this).hasClass('yourclass'); 
}).each-or-do-more 
+3

'.not()' cũng cho phép điều này: '$ (. ..some selector ...) .không phải ('. yourclass'). mỗi-hoặc-do-more' – Shawn

0
if (!($('class/id/objct').hasClass('class name'))) { 
     //codes here... 
} 
2

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

el.is('.oneClass:not(.secondClass)') 

nếu bạn cần kiểm tra nhiều hơn một lớp hoặc

el.is(':not(.secondClass)') 

nếu bạn cần kiểm tra chỉ có một lớp.

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