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

Bar*_*ock 118 jquery css-selectors

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

$("#elementId")...
Run Code Online (Sandbox Code Playgroud)

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

alert($("#idThatDoesnotexist"));
Run Code Online (Sandbox Code Playgroud)

fut*_*ime 181

$('#idThatDoesnotexist').length是你在找什么.(如果它什么都没找到,那就会=== 0.)所以你的条件语句应该是:

if($('#id').length) { /* code if found */ } else { /* code if not found */ }

你得到一个从该警报返回的对象,因为jQuery(几乎)总是在你使用它时返回"jQuery对象",这是jQuery发现允许方法链接的元素的包装.

  • @David事实上你没有_Need_它并不一定使它多余,乍一看IMO它使它更清晰. (11认同)
  • 您还应该考虑,当不熟悉Javascript细微差别的人阅读代码时,保存几个字符的好处是否可以抵消潜在的混淆.在我看来,就可维护性而言,这不是最佳实践. (6认同)
  • 你不需要零,$('#id').长度足够(在javascript中为零== false) (3认同)
  • @Abir:它只会让你更清楚,直到你习惯了没有它的语法,测试真实性而不是明确的 0。我建议简单地习惯没有 `==0` 的语法,你会在任何地方看到它. (2认同)

Joh*_*ock 26

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

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


Spa*_*pas 11

!$.isEmptyObject($.find('#id'))
Run Code Online (Sandbox Code Playgroud)

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


小智 7

$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined
$('#my_selector')[0] !== undefined
Run Code Online (Sandbox Code Playgroud)

这是基本的,现在可以随心所欲.