确定jQuery是否未找到任何元素


126

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

$("#elementId")...

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

alert($("#idThatDoesnotexist"));

Answers:


187

$('#idThatDoesnotexist').length是您要寻找的。(如果什么也没找到,=== 0那么会这样。)因此,您的条件语句应该为:

if($('#id')。length){/ *如果找到代码* /} else {/ *如果找不到代码* /}

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


3
您不需要零,$('#id')。length就足够了(JavaScript中零== false)
David Hellsing 2010年

13
@David 不需要它的事实并不一定会使它变得多余,乍一看IMO使它更加清晰。
阿比尔

1
@Abir:直到您习惯了不使用它的语法,然后测试其真实性,而不是显式地测试0,它才会更加清晰。我建议您简单地习惯不使用的语法== 0,您会在任何地方看到它。
Scott Stafford

@ScottStafford,要获得更多许可,您还可以使用if (!!$('#id').length),执行布尔值转换。
Daniele Vrut 2014年

6
您还应该考虑节省一些字符的好处是否可以抵消不熟悉Java的细微差别的人读取代码时的潜在混乱。我认为,就可维护性而言,并不是最佳实践。
马特·卡尔

26

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

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

11
!$.isEmptyObject($.find('#id'))

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


7
$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined
$('#my_selector')[0] !== undefined

这是基本的,现在做您想做的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.