检查一个div是否存在jquery

是的,我知道很多人都问过这个问题。 但是,这让我感到困惑,因为谷歌上的搜索结果显示了不同的方法(下面列出)

$(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');
}
});

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

< p >编辑: 遗憾的是,人们并不想从这三种不同的方法中学习哪种方法更好。这个问题实际上不是关于“如何检查一个div是否存在”,而是关于哪种方法更好,如果有人能解释一下,为什么它更好?< / p >
379280 次浏览

第一个是最简洁的,我会选择它。前两个是一样的,但是第一个要短一点,所以可以节省字节。第三个是完全错误的,因为该条件的值总是为真,因为对象从来没有将为空或为假。

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

如果你只是检查ID是否存在,不需要进入jQuery,你可以简单地:

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

如果找不到getElementById,则返回null

参考

然而,如果你计划稍后使用jQuery对象,我建议:

$(document).ready(function() {
var $myDiv = $('#DivID');


if ( $myDiv.length){
//you can now reuse  $myDiv here, without having to select it again.
}




});

选择器总是返回jQuery对象,因此不应该需要检查null(如果有需要检查null的边缘情况,我会感兴趣-但我不认为有)。

如果选择器没有找到任何东西,则length === 0为“falsy”(转换为bool时为false)。所以如果它发现了什么,那么它应该是“真实的”-所以你不需要检查> 0。只是因为它的"真实性"