繁体   English   中英

jQuery返回长度属性未定义的对象

[英]jQuery returns object with length attribute undefined

我正在检查是否存在以下元素:

if ($(selector).length > 0){
....
}

但是,有时返回的对象(即使元素存在于DOM中并且已返回)也没有length属性,因此永远不会计算为true。 此错误出现在chrome中。 你知道问题可能是什么吗?

编辑:我使用这段代码:

var variable;
for(let elem in selectors){ 
    if($(elem).length > 0){
      variable = true;
      break;
    }
    else
      variable = false;
  }

给定选择器列表,如果存在至少一个选择器,则variable为真。 这是在谷歌浏览器扩展程序的内容脚本中。 在插件中运行此代码后,即使在谷歌浏览器的控制台中,我也会遇到同样的问题。

编辑:此代码不会产生问题:

var variable;
    if($(elem).length > 0){
      variable = true;

    }
    else
      variable = false;

它接缝问题是for循环或/和break; 声明。 但是,需要一个for循环才能使此代码适用于选择器列表,而不仅仅是一个。

如果这是因为没有加载html,那么我们可以使用超时

现在我从代码中理解的是你正在使用for循环选择器所以选择器应该作为数组而不是其中的元素(elem here)不是数组所以elem将如何具有长度?

setTimeout(function(){
if ($(selector).length > 0){
for(let elem in selectors){ 
if($(elem)){
  variable = true;
  break;
}
else
  variable = false;
}
}
},100);

它接缝document.querySelectorAll()不会产生相同的问题,并按预期工作。 所以我使用了这个而不是$()。 如果您只想检查元素是否存在,那么它的工作正常。 因此,如果网页中至少存在一个选择器,则此代码始终返回true:

function exists(selectors){
   var selectorExists = false;
   for(let i=0; i < selectors.length; i++){ 
      let element = document.querySelectorAll(selectors[i]);
      if(element.length > 0){
         selectorExists = true;
         break;
      }
    }
   return selectorExists;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM