Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确定具有该ID的元素是否存在?_Javascript_Jquery_Html - Fatal编程技术网

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

Javascript 如何确定具有该ID的元素是否存在?,javascript,jquery,html,Javascript,Jquery,Html,我做了一件事: 我知道这个测试不存在。如果我使用console.log,它不会输出undefined/null。相反,它输出一个空数组,当我检查该数组时,它看起来像是返回jQuery对象本身 我还尝试: console.log($('#test')); 但它仍然不起作用。我想知道我正在选择的ID是否存在于页面上。如何使用jQuery实现这一点?对“if”语句使用and,并检查返回的数组的长度是否大于0: if ($('#test')){ //do something } 用这样的东西

我做了一件事:

我知道这个测试不存在。如果我使用console.log,它不会输出undefined/null。相反,它输出一个空数组,当我检查该数组时,它看起来像是返回jQuery对象本身

我还尝试:

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

但它仍然不起作用。我想知道我正在选择的ID是否存在于页面上。如何使用jQuery实现这一点?

对“if”语句使用and,并检查返回的数组的长度是否大于0:

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

用这样的东西

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

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

if ($('#test').length > 0){
    alert('hi')
  }else
  {
     alert('hello')
  }
但是,如果您想创建一个exist函数,jQuery欢迎您在脚本中添加该行

if ($('#test').length > 0){
    //do something
}
现在您可以检查元素是否存在

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

在JavaScript中,对象总是真实的,因此以这种方式使用它总是会通过条件

您需要检查length属性。0的响应是错误的,将按预期工作

if ($(selector).exists()) {
  // Do something
}
这与document.getElementById不同,如果具有该id属性的元素不存在,它将返回null

如果这让人困惑,您可以随时编写一个快速jQuery插件

if ($('#test').length) { 
    // ...    
}
然后可以调用jQuery集合上的exists,以确保选择器至少匹配了一项。

使用

$.fn.exists = function() {
    return !!this.length;
};
长度告诉您如果为0,则选择了多少项。没有元素具有id测试

if ($('#test').length > 0){
    //do something
}
这不会打印该值,因为它表示在DOM中找到的id为test的对象。 如果要获取值,请使用$test.val;或者$test.html

如果要检查是否存在,请按照上述建议进行长度测试


另外,如果您正在测试添加到DOM中的生成元素是否存在,请确保您签出了checkout.livehttp://api.jquery.com/live/. 这是加载页面后创建的所有元素所必需的。

这样做大约快20倍:

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


正如其他人所说,$test始终是一个有效的jQuery对象,即使test不存在。如果测试对象不存在,那么$test将是一个jQuery对象,其中没有DOM对象。内部数组将有一个.length==0,但它仍然是一个有效的对象。

Cool!谢谢你,亚历克斯。但是什么是!!?我不能执行此操作。长度>0?而不是返回!!这是长度;我不能返回此值。长度>0@杰克:是的,你可以,它也会做同样的事情。live与测试元素是否存在没有任何关系。甚至就其实际用途而言,.live已被.delegate和.on.取代。感谢您的支持。想想看,现在这是有道理的。感谢.delegate和.on上的位。如果您选中,您会注意到它说如果没有元素与提供的选择器匹配,那么新的jQuery对象是空的;也就是说,它不包含任何元素,并且.length属性为0。是的,您是对的,但是当我们有一个类作为选择器时,最好且最短的方法是$.test.length
if (document.getElementById("test"))