如何确定具有该ID的元素是否存在?

时间:2012-08-31 05:36:02

标签: javascript jquery html

我做了:

console.log($('#test'));

我知道测试不存在。如果我执行console.log,它不会输出undefined / null。相反,它输出类似于空数组的东西,当我检查该数组时,它看起来像是返回jQuery对象本身。

我也尝试过:

if ($('#test')){
    //do something
}

但它仍然无效。我想知道我选择的ID是否存在于页面上。我如何使用jQuery做到这一点?

7 个答案:

答案 0 :(得分:4)

这样做的速度提高了20倍:

if (document.getElementById("test"))

与jQuery操作相比,只是确定页面中是否存在具有该id的DOM对象。 jQuery可以为你做很多事情,但是当它不需要它的通用选择器引擎和通用对象结构时,它不是最快捷的方法。

正如其他人所说,$("#test")始终是一个有效的jQuery对象,即使#test不存在。如果#test对象不存在,则$("#test")将是一个没有DOM对象的jQuery对象(内部数组将具有.length === 0),但它仍然是有效的对象

答案 1 :(得分:1)

对'if'语句使用'('和')',并检查返回的数组的长度是否大于0:

if ($('#test').length > 0){
    //do something
}

答案 2 :(得分:1)

使用类似的东西

if ($('#test').length > 0){
    alert('hi')
  }else
  {
     alert('hello')
  }

Live Demo

答案 3 :(得分:1)

最好的方法是检查所选元素的长度

if ($('#test').length > 0){
    //do something
}

但是如果你想创建一个存在的函数,jQuery欢迎你在脚本中添加一行

jQuery.fn.exists = function(){return this.length>0;}

现在您可以检查元素是否存在

if ($(selector).exists()) {
  // Do something
}

答案 4 :(得分:1)

在JavaScript中,对象总是 truthy ,因此以这种方式使用它将始终通过条件。

您需要检查length属性。 0的回复是 falsy ,并且会按预期工作。

if ($('#test').length) { 
    // ...    
}

这与document.getElementById()不同,如果具有null属性的元素不存在,则返回id

如果这令人困惑,你总是可以写一个快速的jQuery插件。

$.fn.exists = function() {
    return !!this.length;
};

然后,您可以在jQuery集合上调用exists(),以确保选择器至少匹配一个项目。

答案 5 :(得分:1)

使用

if ($('#test').length > 0){
    //do something
}

长度告诉你如果项目为0则选择了多少项目没有元素具有id测试。

答案 6 :(得分:0)

console.log($('#test'));

这不会打印该值,因为它表示使用id测试在DOM中找到的对象。 如果要获取值,请使用$(“#test”)。val();或$(“#test”)。html();

如果您想检查存在,请按照上面的建议进行长度测试。

此外,如果您正在测试是否存在生成的元素(您添加到DOM中的内容),请确保签出.live(http://api.jquery.com/live/)。这需要在页面加载后创建的所有元素。