检查一个div是否存在与jquery

可能重复:
是否有一个“存在”function的jQuery

是的,我知道这已经被问了很多。 但是,它让我感到困惑,因为谷歌search结果显示了不同的方法(下面列出)

$(document).ready(function() { if ($('#DivID').length){ alert('Found with Length'); } if ($('#DivID').length > 0 ) { alert('Found with Length bigger then Zero'); } if ($('#DivID') != null ) { alert('Found with Not Null'); } }); 

3中哪一个是检查div是否存在的正确方法?

编辑:这是一个可怜的人看到,不想从三种不同的方法中学习什么是更好的方法。 这个问题实际上并不是“如何检查div是否存在”,而是关于哪种方法更好,如果有人能解释,为什么它更好?

首先是最简洁的,我会去那个。 前两个是相同的,但第一个只是短一点,所以你会节省字节。 第三个是明显错误的,因为这个条件总是会评估为真,因为这个对象永远不会是空的或者是虚的。

如果你只是检查一个ID的存在,没有必要进入jQuery ,你可以简单地:

 if(document.getElementById("yourid") !== null) { } 

如果找不到getElementById返回null

参考 。

不过,如果你打算以后使用jQuery对象,我会build议:

 $(document).ready(function() { var $myDiv = $('#DivID'); if ( $myDiv.length){ //you can now reuse $myDiv here, without having to select it again. } }); 

select器总是返回一个jQuery对象,所以不需要检查null (如果存在需要检查null的边缘情况,我会很感兴趣,但是我不认为它是存在的)。

如果select器没有find任何东西,那么length === 0是“falsy”(当转换为bool时,它是false)。 所以,如果它发现了什么,那么它应该是“truthy” – 所以你不需要检查> 0.只是因为它是“真理”

正如karim79提到的,第一个是最简洁的。 然而,我可以争辩说,第二个更容易理解,因为一些Javascript / jQuery程序员对if语句中非零/ false值的计算结果为true并不明显。 正因为如此,第三种方法是不正确的。