检查元素是否存在于 jQuery

IT技术 javascript jquery
2021-01-27 06:47:19

如果元素是通过.append()方法创建的,如何检查元素是否存在$('elemId').length对我不起作用。

6个回答

$('elemId').length 对我不起作用。

您需要#在元素 id 之前放置

$('#elemId').length
---^

使用 vanilla JavaScript,您不需要 hash ( #) eg document.getElementById('id_here'),但是当使用 jQuery 时,您确实需要id像 CSS 一样基于目标元素将 hash 放入

仅当您使用错误的函数时,您才“不需要哈希”。document.querySelector('#id_here')需要与 jQuery 等效项一样多的哈希符号$('#id_here')
2021-03-13 06:47:19
使用 CSS 选择器,因此“#elementId”按元素选择。“elementId”实际上会选择所有标签名为“elementId”的 emenets
2021-03-24 06:47:19
@trejder 很可能海报不知道 Vanilla JS,当他们说“vanilla JavaScript”时,他们实际上是基础 JavaScript(“vanilla”如“plain”、“unadorned”)。
2021-03-28 06:47:19
@trejder 看起来“Vanilla JS”无论如何都与基础 Javascript 完全相同(下载的文件总是空的)-有人刚刚决定为基础 Javascript 进行销售宣传。
2021-04-01 06:47:19
是的,那个网站正在嘲笑需要一个名为“Vanilla JS”的框架,它只不过是 JavaScript 本身。@trejder 应该更仔细地阅读。
2021-04-08 06:47:19

尝试检查选择器的长度,如果它返回一些东西,那么元素必须存在,否则不存在。

 if( $('#selector').length )         // use this if you are using id to check
{
     // it exists
}


 if( $('.selector').length )         // use this if you are using class to check
{
     // it exists
}
我发现这种方法非常不直观。这几乎就像询问如何确定一个数字是否为负数,然后有人告诉您需要在汇编中编写代码,然后手动调整 CPU 寄存器中的某些位,而不是简单地调用像 .isNegative() 这样的方法。检查“长度”属性的值会使事情变得混乱。我宁愿看到类似 .exists() 方法的东西,它在扫描代码时可以立即识别。
2021-03-21 06:47:19
这会在控制台中引发异常。 jquery.min.js:2 jQuery.Deferred exception: Cannot read property 'length' of undefined TypeError: Cannot read property 'length' of undefined
2021-03-31 06:47:19
你可以写一个更直观的函数:function exists(elementName) { return $(elementName).length; }
2021-04-02 06:47:19
在某些方面,jquery 在使 javascript 更易于访问方面取得了跨越式发展,但距离惯用还很远
2021-04-09 06:47:19
这个解决方案非常直观。length 属性告诉您有多少元素与查询匹配。有什么不直观或不直接的?
2021-04-09 06:47:19

试试这个:

if ($("#mydiv").length > 0){
  // do something here
}

如果元素不存在,则长度属性将返回零。

@wessamelmahdy 冗长可以提高清晰度,从而可以降低维护的认知成本
2021-03-18 06:47:19
如果不包括> 0. 任何想法为什么会发生?
2021-03-21 06:47:19
不需要> 0,如果它是0,它将评估为false。
2021-03-22 06:47:19
抱歉错误的downvote 稍后修复它
2021-03-27 06:47:19
if ($("#mydiv").length === 0){ 因为类型
2021-04-09 06:47:19

如何检查元素是否存在

if ($("#mydiv").length){  }

如果是0,它将评估为false,不止于此true

不需要大于、小于比较。

谢谢,没问题了。我已经用这个替换了它stackoverflow.com/a/21801090/2232458
2021-03-30 06:47:19
随意粘贴您的代码段
2021-04-04 06:47:19
那对我不起作用。我使用的浏览器是 Firefox 32.02。
2021-04-06 06:47:19

elemId顾名思义,是一种Id属性,这些都是可以做,以检查它是否存在:

Vanilla JavaScript:如果您有更高级的选择器:

//you can use it for more advanced selectors
if(document.querySelectorAll("#elemId").length){}

if(document.querySelector("#elemId")){}

//you can use it if your selector has only an Id attribute
if(document.getElementById("elemId")){}

jQuery:

if(jQuery("#elemId").length){}
@Mrinmoy 你的心态要么来自 Java 要么来自 C#。在 JavaScript 中,我们知道我们有七个假值(0、-0、null、undefined、''、NaN 和 false),考虑到这些假值if (document.querySelector("elemId") != null )对编写更具可读性的代码没有影响。在 JavaScript 世界中,强烈建议您了解 JavaScript 社区的约定,而不是让您的思维方式停留在 Java 或 C# 等结构化编程语言中。对于这种特定情况下的 JavaScript 开发人员来说,这!= null是完全多余的,而且可读性要低得多。
2021-03-18 06:47:19
@Mrinmoy 我同意这是一个有争议的话题,但我所说的不是我的观点,而是事实。在我的团队中,如果我看到一个带有 ` != null ` 的拉取请求,我不会批准它。虽然这是一个惯例,但它已成为一种规则。对我而言,最重要的是确保我团队中的开发人员了解基础知识,并且他们的代码一致且没有冗余。` != null` 对我来说就像 ` != false` 是 if 语句的有效条件,但它本身是多余的。
2021-03-18 06:47:19
您不需要 != nullas querySelectorwill always return null(which is falsey) 或元素
2021-03-19 06:47:19
@MehranHatami ,因此您同意该代码只能由 javaScripter 读取,但如果querySelector()返回null or 0或其他 5 个值中的任何一个,他仍然会感到困惑 querySelectorAll() jQuery 在找不到元素时有不同的返回值。请考虑到如今人们在研究多语言技术和框架,因此使事情更具可读性肯定会受益。顺便说一句,我更像是一个 javascripter 而不是 java/golang 程序员
2021-03-28 06:47:19
我仍然会使用if (document.querySelector("elemId") != null )只是为了提高代码可读性
2021-04-04 06:47:19