如何检查元素是否存在?

4

我正在使用.length方法在一个条件语句中来轮询页面是否存在外部加载的对象(在它存在之前,我无法用jQuery来进行样式设置):

function hackyFunction() {
  if($('#someObject').length<1)
  { setTimeout(hackyFunction,50) }
  else
  { $('#someObject').someMethod() }}

使用length是做这件事情的最佳方式吗?

5个回答

12
如果您只是想查找特定元素,可以使用document.getElementById
function hackyFunction() {
    if (document.getElementById("someObject")) {
         // Exist
    } else {
         // Doesn't exist
    }
}

1
我不同意。如果一个元素有多个检查,脚本将充满gEBI函数,如果您已经包含了整个jQuery库,则这是无用的。更不用说,在那个特定的片段中,除非在“if..else”之前缓存它,否则您将不得不调用它两次。如果您在各个地方都使用gEBI,您必须记住将jQuery包装在其周围,否则,除非您调用原型方法,否则它们将未被定义。 - meder omuraliev
1
你说得完全正确,但是...^^ 在来自TO的代码片段中,为同一元素调用了两个jquery对象。此外,TO仅选择了“javascript”标签。因此,使用vanilla-js解决方案绝对是合适的。 - Andreas

4

是的,你应该使用 .length。不能使用 if ($('#someObject')) ...,因为 jQuery 选择器 返回一个 jQuery 对象,在 JavaScript 中任何对象都是真值。


3

如果您正在查找ID,则只应该有一个,因此您也可以编写:

if($('#someObject')[0])

3

是的,.length是可接受的,通常我也会使用它。


1

使用jQuery,检查长度很容易。

if (!$('#someObject').length) {
    console.log('someObject not present');
}

当然,使用原生JavaScript,您可以通过document.getElementById(如果按ID获取元素)进行检查。
if (document.getElementById('someObject')) {
    console.log('someObject exists');
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接