为什么我不能查询我刚刚通过append()添加的元素?

时间:2012-07-16 21:33:57

标签: javascript jquery

为什么我不能通过append()查询我刚刚添加的元素?

$('body').append('<div id="testing"></div>');
if($("#testing").length == 0)
    alert("WTF!  Testing div should be there!");

在JS完成运行之前是否有某种布局不会发生?

我该如何解决这个问题?是否有其他方法可以调用dom元素来立即使用?

3 个答案:

答案 0 :(得分:5)

我会看看这段代码的执行位置。这是用jQuery(document).ready()函数块运行的吗?我看不到你的完整代码。

当我遇到这样的事情时,通常是因为我的代码在dom准备好之前正在执行。请试试这个:

jQuery(document).ready(function(){
    $('body').append('<div id="testing"></div>');
    if($("#testing").length == 0){
        alert("WTF!  Testing div should be there!");
    }
});

答案 1 :(得分:0)

因为#testing的长度为1.如下所示:http://jsfiddle.net/Skooljester/FrsHs/2/

答案 2 :(得分:0)

jsFiddle demo

$(function(){

    if( $("#testing").length  ){   // test for existance               
            alert("YEEE there it is!");                
    }else{                 
             alert("Buuuubububu :( ");            
    }

});

如果你测试不存在,请使用:

if( $("#testing").length <= 0  )

或:

if( !($("#testing").length)  )