关于HTML:使用jquery检查DIV是否存在

Check if a div exists with jquery

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Is there an “exists” function for jQuery

是的,我知道这个要求很多。但是,这让我很困惑,因为谷歌的搜索结果显示了不同的方法(如下所列)

1
2
3
4
5
6
7
8
9
10
11
12
13
$(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,只需:

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

如果找不到,getElementById返回null

参考文献。

但是,如果您计划稍后使用jquery对象,我建议:

1
2
3
4
5
6
7
8
9
$(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。只是因为它是"真实的"


正如Karim79所提到的,第一个是最简洁的。但是,我可以说第二个更容易理解,因为对于一些javascript/jquery程序员来说,在if语句中,非零/假值被评估为true是不明显/不知道的。因此,第三种方法是不正确的。