[英]How do I find out whether an element with that ID exists or not?
我做:
console.log($('#test'));
我知道测试不存在。 如果我执行console.log,则不会输出undefined / null。 而是输出类似空数组的内容,当我检查该数组时,它看起来像返回了jQuery对象本身。
我也尝试过:
if ($('#test')){
//do something
}
但这仍然行不通。 我想知道我选择的ID在页面上是否存在。 我该如何使用jQuery?
这样做的速度大约快20倍:
if (document.getElementById("test"))
与jQuery操作进行比较,以确定页面中是否存在具有该ID的DOM对象。 jQuery可以为您做很多事情,但是当不需要通用选择器引擎和通用对象结构时,它并不是最快的处理方法。
正如其他人所说, $("#test")
始终是有效的jQuery对象,即使#test
不存在也是如此。 如果#test
对象不存在,则$("#test")
将是其中没有DOM对象的jQuery对象(内部数组将具有.length === 0
),但它仍然是有效的宾语。
对'if'语句使用'('和')',并检查返回的数组的长度是否大于0:
if ($('#test').length > 0){
//do something
}
最好的方法是检查所选元素的长度
if ($('#test').length > 0){
//do something
}
但是,如果您想创建一个存在的函数,jQuery欢迎您,只需在脚本中添加一行
jQuery.fn.exists = function(){return this.length>0;}
现在您可以检查元素是否存在
if ($(selector).exists()) {
// Do something
}
在JavaScript中,对象始终是真实的 ,因此以这种方式使用对象将始终通过条件。
您需要检查length
属性。 响应0
为falsy ,将按预期工作。
if ($('#test').length) {
// ...
}
这不同于document.getElementById()
,如果具有该id
属性的元素不存在,则返回null
。
如果这令人困惑,那么您总是可以编写一个快速的jQuery插件。
$.fn.exists = function() {
return !!this.length;
};
然后,您可以在jQuery集合上调用exists()
,以确保选择器已匹配至少一项。
采用
if ($('#test').length > 0){
//do something
}
长度告诉您选择的项目数(如果为0),则没有元素进行id测试。
console.log($('#test'));
这不会显示该值,因为它表示在id测试中在DOM中找到的对象。 如果要获取值,请使用$(“#test”)。val();。 或$(“#test”)。html();
如果要检查是否存在,请按照上面的建议进行长度测试。
另外,如果要测试是否存在生成的元素(已添加到DOM中的元素),请确保签出.live(http://api.jquery.com/live/)。 这是页面加载后创建的所有元素所必需的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.