【问题标题】:Determining whether jQuery has not found any element判断jQuery是否没有找到任何元素
【发布时间】:2011-02-22 02:07:23
【问题描述】:

我正在使用 jQuery 的选择器,尤其是 id 选择器:

$("#elementId")...

我应该如何判断 jQuery 是否找到了该元素? 即使具有指定 id 的元素不存在,下一条语句给我:[object Object]

alert($("#idThatDoesnotexist"));

【问题讨论】:

    标签: jquery css-selectors


    【解决方案1】:

    $('#idThatDoesnotexist').length 是您正在寻找的。 (如果什么也没找到,这将是=== 0。)所以你的条件语句应该是:

    if($('#id').length) { /* 找到的代码 */ } else { /* 找不到的代码 */ }

    您会从该警报返回一个对象,因为 jQuery(几乎)在您使用它时总是返回“jQuery 对象”,它是 jQuery 发现的允许方法链接的元素的包装器。

    【讨论】:

    • 你不需要零,$('#id').length 就足够了(javascript 中的零 == false)
    • @David 你不需要需要这一事实并不一定让它变得多余,乍一看,IMO 让它更清楚了。
    • @Abir:它只会让你更清楚,直到你习惯了没有它的语法,测试真实性而不是明确的 0。我建议简单地习惯没有 == 0 的语法,随处可见。
    • @ScottStafford,要获得更多许可,您还可以使用if (!!$('#id').length),它会进行布尔转换。
    • 您还应该考虑保存几个字符的好处是否可以抵消不熟悉 Javascript 细微差别的人阅读代码时的潜在混淆。在我看来,就可维护性而言,这不是最佳实践。
    【解决方案2】:

    Futuraprime 是正确的,但您可以通过执行以下操作来缩短语法:

    if ($("#id").length) {
       //at least one element was found
    } else {
       //no elements found
    }
    

    【讨论】:

      【解决方案3】:
      !$.isEmptyObject($.find('#id'))
      

      如果元素存在则返回 true,否则返回 false。

      【讨论】:

        【解决方案4】:
        $('#my_selector').length > 0 
        $('#my_selector').get(0) !== undefined
        $('#my_selector')[0] !== undefined
        

        这是基本的,现在随心所欲。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-02
          • 1970-01-01
          • 1970-01-01
          • 2010-09-25
          • 1970-01-01
          • 2012-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多