Làm cách nào để kiểm tra nếu không có lớp. Ví dụ, tôi biết cách kiểm tra xem nó có lớp "kiểm tra" không, nhưng làm cách nào để kiểm tra xem liệu nó có lớp "kiểm tra" không?
if($(this).hasClass("test")){
}
Làm cách nào để kiểm tra nếu không có lớp. Ví dụ, tôi biết cách kiểm tra xem nó có lớp "kiểm tra" không, nhưng làm cách nào để kiểm tra xem liệu nó có lớp "kiểm tra" không?
if($(this).hasClass("test")){
}
Câu trả lời:
if (!$(this).hasClass("test")) {
Tất nhiên câu trả lời của sdleihssirhc là câu trả lời đúng cho trường hợp trong câu hỏi, nhưng chỉ là một tài liệu tham khảo nếu bạn cần chọn các phần tử không có một lớp nhất định, bạn có thể sử dụng công cụ không chọn:
// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' ); // <-- alternative
Chọn phần tử (hoặc nhóm phần tử) có lớp "abc", không có lớp "xyz":
$('.abc:not(".xyz")')
Khi chọn CSS thông thường, bạn có thể sử dụng .abc:not(.xyz)
.
sử dụng phương thức .not () và kiểm tra một thuộc tính:
$('p').not('[class]');
Kiểm tra nó ở đây: http://jsfiddle.net/AWb79/
Bạn có thể thử điều này:
<div id="div1" class="myClass">there is a class</div>
<div id="div2"> there is no class2 </div>
$(document).ready(function(){
$("#div2").not('.myClass'); // do not have `myClass` class.
});
Có nhiều kịch bản phức tạp hơn khi điều này không hoạt động. Điều gì sẽ xảy ra nếu bạn muốn chọn một phần tử với lớp A không chứa các phần tử với lớp B. Cuối cùng, bạn cần một cái gì đó giống như:
đọc qua 6yrs này sau đó và nghĩ rằng tôi cũng sẽ hack nó, cũng theo mạch TIMTOWTDI ...: D, hy vọng nó không chính xác 'nghi thức JS'.
Tôi thường thiết lập một var với điều kiện và sau đó tham khảo nó sau..ie;
// var set up globally OR locally depending on your requirements
var hC;
function(el) {
var $this = el;
hC = $this.hasClass("test");
// use the variable in the conditional statement
if (!hC) {
//
}
}
Mặc dù tôi nên đề cập rằng tôi làm điều này bởi vì tôi chủ yếu sử dụng toán tử ternary có điều kiện và muốn mã sạch. Vì vậy, trong trường hợp này, tất cả những gì tôi muốn là:
hC ? '' : foo(x, n) ;
// OR -----------
!hC ? foo(x, n) : '' ;
... thay vì điều này:
$this.hasClass("test") ? '' : foo(x, n) ;
// OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;
Tôi không biết tại sao, nhưng câu trả lời được chấp nhận đã không làm việc cho tôi. Thay vào đó, nó hoạt động:
if ($(this).hasClass("test") !== false) {}
if($(this).is(":not(.test)"))
> :)