我使用.length
方法在条件语句是轮询页面的外部装载的物品的存在(直到它的存在,我不能用jQuery风格吧):如何检查元素的存在?
function hackyFunction() { if($('#someObject').length<1) { setTimeout(hackyFunction,50) } else { $('#someObject').someMethod() }}
是length
这样做的最好方法吗?
我使用.length
方法在条件语句是轮询页面的外部装载的物品的存在(直到它的存在,我不能用jQuery风格吧):如何检查元素的存在?
function hackyFunction() { if($('#someObject').length<1) { setTimeout(hackyFunction,50) } else { $('#someObject').someMethod() }}
是length
这样做的最好方法吗?
是的,你应该使用.length
。你不能使用if ($('#someObject')) ...
,因为jQuery selectors返回一个jQuery对象,并且任何对象在JavaScript中都是真的。
是的,.length
是可以接受的,通常是我使用的。
如果你只是寻找一个特定的元素,你可以只使用document.getElementById
function hackyFunction() {
if (document.getElementById("someObject")) {
// Exist
} else {
// Doesn't exist
}
}
如果你正在寻找一个ID只存在应该永远是其中的一个,所以你也可以这样写:
if($('#someObject')[0])
使用jQuery,检查长工作正常。
if (!$('#someObject').length) {
console.log('someObject not present');
}
当然与香草的JavaScript,你可以用document.getElementById
检查(如果按id获取元素)
if (document.getElementById('someObject')) {
console.log('someObject exists');
}
+1好老香草JS) – Andreas 2010-10-10 13:50:25
我不同意。如果你对一个元素进行了多重检查,那么这个脚本将会被gEBI函数填充,如果你已经*了包括整个** jQuery库,那么这个函数就没用了。更不用说,在那个特定的片段中,你必须调用它两次,除非你没有在'if..else'之前缓存它。如果你在整个地方使用gEBI,你必须记住要包装jQuery,或者除非你调用原型方法,否则它们将不会被定义。 – 2010-10-10 13:53:11
你是绝对正确的,但是... ^^在TO的代码片段中有两个为相同元素调用的jquery对象。 TO也选择了'javascript'标签。为此,vanilla-js解决方案是绝对合适的。 – Andreas 2010-10-10 14:54:31