1

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

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

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

我怎样才能解决这个问题?是否有其他方法可以调用来创建 dom 元素以立即使用?

4

3 回答 3

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!");
    }
});
于 2012-07-16T21:42:19.343 回答
0

因为长度#testing是1。如图:http: //jsfiddle.net/Skooljester/FrsHs/2/

于 2012-07-16T21:36:26.813 回答
0

jsFiddle 演示

$(function(){

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

});

如果您测试不存在使用:

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

或者:

if( !($("#testing").length)  )
于 2012-07-16T21:38:23.633 回答