4

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

函数hackyFunction(){if($('#someObject').length<1){setTimeout(hackyFunction,50)}其他的{$('#someObject').someMethod()}}

长度最好的方法是什么?

5个答案5

重置为默认值
12

如果你只是在寻找一个特定的元素,你可以使用文档.getElementById

函数hackyFunction(){if(document.getElementById(“someObject”)){//存在}其他{//不存在}}
2
  • 1
    我不同意。如果您对一个元素进行多次检查,脚本将填充gEBI函数,如果您已经包括整个的jQuery库。更不用说,在这个特定的代码片段中,您必须调用它两次除非在如果…否则如果你到处都使用gEBI,你必须记住用jQuery包装它,或者除非你调用原型方法,否则它们不会被定义。 评论 2010年10月10日13:53
  • 1
    你完全正确,但是……^^在TO的代码片段中,有两个为同一元素调用的jquery对象。此外,TO只选择了“javascript”标记。为此,vanilla-js解决方案是绝对合适的。 评论 2010年10月10日14:54
4

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

对,.长度是可以接受的,通常是我使用的。

如果您正在查找ID,则只能有一个ID,因此您还可以写:

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

使用jQuery,可以很好地检查长度。

if(!$('#someObject').length){console.log(“someObject不存在”);}

当然,对于普通JavaScript,您可以使用文档.getElementById(如果通过id获取元素)

if(document.getElementById('someObject')){console.log('someObject exists');}

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.