检查div是否存在jquery

Dem*_*tic 297 html jquery exists

可能重复:
jQuery是否存在"exists"函数

是的,我知道这已被问到很多.但是,它让我困惑,因为谷歌搜索结果显示不同的方法(如下所列)

$(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');
    }
});
Run Code Online (Sandbox Code Playgroud)

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

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

kar*_*m79 180

第一个是最简洁的,我会去那.前两个是相同的,但第一个只是更短的一点,所以你将节省字节.第三个是完全错误的,因为该条件将始终评估为真,因为该对象永远不会为null或为此.

  • "第一个是最简洁的,我会选择那个.{...},所以你会节省字节",非常糟糕的心态.可维护的代码>简洁的代码. (8认同)
  • @NiklasEkman - 我同意可维护性比精确的代码更重要,但我并没有概括。我想我说得不够清楚。在测试集合的 *length* 的情况下,对于正非零,在我看来 `.length` 击败了 `.length > 0`,所以这是一种双赢。不过,感谢您指出这一点。 (2认同)

Ale*_*ith 97

如果您只是检查是否存在ID,则无需进入jQuery,您可以简单地:

if(document.getElementById("yourid") !== null)
{
}
Run Code Online (Sandbox Code Playgroud)

getElementByIdnull如果找不到则返回.

参考.

但是,如果您打算稍后使用jQuery对象,我建议:

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

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


});
Run Code Online (Sandbox Code Playgroud)

选择器总是返回一个jQuery对象,所以不需要检查null(如果有一个需要检查的边缘情况,我会感兴趣null- 但我认为没有).

如果选择器没有找到任何length === 0"麻痹"的东西(转换为bool时为假).因此,如果它找到了某些东西,那么它应该是"真实的" - 所以你不需要检查> 0.只是为了它的"真实性"


tsk*_*zzy 9

正如karim79所提到的,第一个是最简洁的.但是我可以说第二个更容易理解,因为一些Javascript/jQuery程序员不明白/不知道true在if语句中对非零/ false值进行求值.因此,第三种方法是不正确的.

  • 我认为所有Javascript开发人员**都应该知道这一点.但是现在有这么多人几乎完全用"jQuery"开发,缺乏基本的Javascript基础知识.但这是一个完全不同的讨论:P (2认同)