2010-10-10 62 views
3

我使用.length方法在条件语句是轮询页面的外部装载的物品的存在(直到它的存在,我不能用jQuery风格吧):如何检查元素的存在?

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

length这样做的最好方法吗?

回答

4

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

2

是的,.length是可以接受的,通常是我使用的。

7

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

function hackyFunction() { 
    if (document.getElementById("someObject")) { 
     // Exist 
    } else { 
     // Doesn't exist 
    } 
} 
+1

+1好老香草JS) – Andreas 2010-10-10 13:50:25

+1

我不同意。如果你对一个元素进行了多重检查,那么这个脚本将会被gEBI函数填充,如果你已经*了包括整个** jQuery库,那么这个函数就没用了。更不用说,在那个特定的片段中,你必须调用它两次,除非你没有在'if..else'之前缓存它。如果你在整个地方使用gEBI,你必须记住要包装jQuery,或者除非你调用原型方法,否则它们将不会被定义。 – 2010-10-10 13:53:11

+1

你是绝对正确的,但是... ^^在TO的代码片段中有两个为相同元素调用的jquery对象。 TO也选择了'javascript'标签。为此,vanilla-js解决方案是绝对合适的。 – Andreas 2010-10-10 14:54:31

2

如果你正在寻找一个ID只存在应该永远是其中的一个,所以你也可以这样写:

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

使用jQuery,检查长工作正常。

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

当然与香草的JavaScript,你可以用document.getElementById检查(如果按id获取元素)

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