关于条件语句:if-not condition失败(jQuery)

if-not condition fails (jQuery)

本问题已经有最佳答案,请猛点这里访问。

http://jsbin.com/zexix/1/

1
2
3
4
5
6
7
8
9
$(function() {

    if ( !$(".first.last") ) {
      console.log("div with both first and last classes does not exists")
    } else {
      console.log("it exists");
    }

});

我想检查是否存在同时具有firstlast类的div,但检查失败。


您需要检查找到的元素数量,因为如果没有找到任何元素,jQuery将返回一个空集合(在if语句中计算为truthy值):

1
if ( !$(".first.last").length )

我建议明确地对0进行测试,而不是依赖于假值:

1
if ( $(".first.last").length === 0 )


您可以通过检查从JQuery返回的第一个对象来简化这一过程:

1
2
3
4
5
if (!$(".first.last")[0]){
    console.log("div with both first and last classes does not exists");
} else {
  console.log("it exists");
}


有两种方法:

1.检查长度:

1
if ( !$(".first.last").length ) { // check the length if none returns 0 == false

2.检查能见度:

1
if ( !$(".first.last").is(':visible') ) { // returns boolean true/false