检查jQuery中是否存在元素

Nic*_*ick 1209 javascript jquery

如果元素是由.append()方法创建的,如何检查元素是否存在? $('elemId').length不适合我.

Sar*_*raz 1679

$('elemId').length 不适合我.

你需要#在元素id之前放置:

$('#elemId').length
---^
Run Code Online (Sandbox Code Playgroud)

使用vanilla JavaScript,你不需要hash(#)document.getElementById('id_here'),但是当使用jQuery时,你需要将hash放到基于idCSS的目标元素上.

  • 因此使用CSS选择器"#elementId"按元素选择."elementId"实际上会选择其_tags_被命名为"elementId"的所有emenets (43认同)
  • @trejder很可能这张海报没有意识到Vanilla JS,当他们说"vanilla JavaScript"时,他们实际上意味着*基础JavaScript("vanilla",如"简单","朴实无华"). (8认同)
  • 是的,那个网站嘲笑需要一个名为"Vanilla JS"的框架,它只不过是JavaScript本身.@trejder应该仔细阅读一下. (8认同)
  • @trejder看起来"Vanilla JS"与基本Javascript完全相同(下载的文件总是空的) - 有人刚决定为基础Javascript做一个销售推销. (5认同)
  • 只有在使用错误的功能时才"不需要哈希".`document.querySelector('#id_here')`需要的哈希符号和jQuery等价的`$('#id_here')`一样多. (3认同)

小智 355

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

 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
}
Run Code Online (Sandbox Code Playgroud)

  • 我发现这种方法非常不直观.这几乎就像是在询问如何确定一个数字是否为负数,然后有人告诉你需要在汇编中编写代码然后手动旋转CPU寄存器中的一些位,而不是简单地调用类似.isNegative()的方法.检查'length'属性的值会使事情变得混乱.我宁愿看到像.exists()方法这样的东西,在扫描代码时可以立即识别. (16认同)
  • 在某些方面,jquery实现了使javascript更容易访问的跨越式发展,但仍然远非惯用 (3认同)
  • 这个解决方案非常直观.length属性告诉您有多少元素与查询匹配.什么不直观或直截了当? (2认同)
  • 你可以写一个更直观的函数:`function exists(elementName) { return $(elementName).length; }` (2认同)

Gau*_*123 130

试试这个:

if ($("#mydiv").length > 0){
  // do something here
}
Run Code Online (Sandbox Code Playgroud)

如果element不存在,则length属性将返回零.

  • 不需要> 0,如果它为0,它将评估为false. (12认同)

lfe*_*445 62

如何检查元素是否存在

if ($("#mydiv").length){  }
Run Code Online (Sandbox Code Playgroud)

如果是0,它将评估false,除此之外的任何东西true.

不需要大于,小于比较.


Meh*_*ami 27

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")){}
Run Code Online (Sandbox Code Playgroud)

jQuery的:

if(jQuery("#elemId").length){}
Run Code Online (Sandbox Code Playgroud)


loo*_*ode 13

您还可以使用类似数组的表示法并检查第一个元素.空数组或集合的第一个元素很简单undefined,因此您可以获得"正常"的javascript truthy/falsy行为:

var el = $('body')[0];
if (el) {
    console.log('element found', el);
}
if (!el) {
    console.log('no element found');
}
Run Code Online (Sandbox Code Playgroud)


Web*_*tik 10

您可以使用本机JS来测试对象的存在:

if (document.getElementById('elemId') instanceof Object){
    // do something here
}
Run Code Online (Sandbox Code Playgroud)

不要忘记,jQuery只不过是一个复杂的(非常有用的)本机Javascript命令和属性的包装器

  • 你不需要`instanceof Object` (4认同)