【问题标题】:jQuery: What is returned if $('#id') doesn't match anything?jQuery:如果 $('#id') 不匹配任何东西会返回什么?
【发布时间】:2010-10-28 14:23:17
【问题描述】:

如果 $('#id') 不匹配会返回什么?我认为它会是 null 或 false 或类似的东西,所以我尝试像这样检查:

var item = $('#item');
if (!item){
    ...
}

但这没有用。

【问题讨论】:

    标签: javascript jquery css jquery-selectors


    【解决方案1】:

    您可以使用以下方法找到匹配的元素数:

    $('selector').length
    

    要检查是否没有匹配的元素,请使用:

    var item = $('#item');
    if (item.length == 0) {
      // ...
    }
    

    【讨论】:

    • 是的,这是正确的方法。但是,要回答这个问题,它会返回一个匹配的 DOM 元素的对象/数组。 'length' 属性可用于任何 javascript 对象(数组、字符串等...)以确定其长度(num 个元素、num 个字符等...)。
    【解决方案2】:

    虽然$('selector').length 非常适合找出您的选择器匹配的对象数量,但实际上完全没有必要。关于 jQuery 的事情是所有基于选择器的函数在内部都使用长度,所以你可以只做 $(selector).hide() (或其他什么),它对空集不采取任何行动。

    【讨论】:

    • 这通常是正确的,但偶尔你只需要检查一个元素是否存在。不过好点,所以无论如何+1,因为你在大多数情况下都是正确的。
    【解决方案3】:

    一个不包含 DOM 节点的 jQuery 对象。

    你应该可以使用

    var item = $('#item');
    if (!item[0]){
        ...
    }
    

    为了您的存在检查。

    【讨论】:

      【解决方案4】:

      长度属性的别名是 size() 方法。所以你基本上也可以查询:

      $("选择器").size()

      查看匹配的元素数量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-24
        • 1970-01-01
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 2012-01-03
        相关资源
        最近更新 更多