Javascript 如何确定具有该ID的元素是否存在?
我做了一件事: 我知道这个测试不存在。如果我使用console.log,它不会输出undefined/null。相反,它输出一个空数组,当我检查该数组时,它看起来像是返回jQuery对象本身 我还尝试: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($('#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"))