jQuery:如果$('#id')与任何内容不匹配,会返回什么?

Sio*_*e21 25 javascript css jquery jquery-selectors

如果$('#id')与任何内容不匹配,返回什么?我认为这将是null或false或类似的东西所以我尝试检查如下:

var item = $('#item');
if (!item){
    ...
}
Run Code Online (Sandbox Code Playgroud)

但那没用.

Aym*_*ieh 48

您可以使用以下命令找到匹配的元素数量:

$('selector').length
Run Code Online (Sandbox Code Playgroud)

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

var item = $('#item');
if (item.length == 0) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,这是正确的方法.但是,要回答这个问题,它会返回匹配的DOM元素的对象/数组.'length'属性可用于任何javascript对象(数组,字符串等)以确定其长度(num元素,num字符等...). (5认同)
  • 只需使用if(item.length) (2认同)

Sud*_*han 7

虽然$('selector').length很适合找出你的选择器匹配多少个对象,但它实际上是完全不必要的.关于jQuery的事情是所有基于选择器的函数都在内部使用长度,所以你可以做$(selector).hide()(或者其他)并且它不需要对空集进行操作.


wax*_*ing 5

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

你应该可以使用

var item = $('#item');
if (!item[0]){
    ...
}
Run Code Online (Sandbox Code Playgroud)

为了你的存在检查.