2011-05-10 79 views
0

有问题与附加DOM节点..追加DOM节点

这不起作用IM:

this.loader = $(document.body).append('<div class="loader" style="display:none">loader</div>'); 

$(this.loader).fadeIn(1000); 

但这个工程:

this.loader = DOM.div(document.body); 
with(this.loader){ 
    className = 'loader'; 
    innerHTML = 'loader'; 
    style.display = 'none'; 
} 

$(this.loader).fadeIn(1000); 

有谁能够告诉我,什么是错的?!

,但如果我不喜欢这样的DIV被添加和可见

this.loader = $(document.body).append('<div class="loader">loader</div>'); 
+0

'DOM.div(...)'?这看起来不像(只)jQuery给我。 – 2011-05-10 14:41:41

+0

其因为它自己的DOM构造函数:) – clarkk 2011-05-10 15:22:01

+1

由于[jQuery核心可以采用属性映射](http://api.jquery.com/jQuery/#jQuery2)(以及一大堆其他好东西,比如事件绑定),你为什么不直接使用它呢?像[this](http://jsbin.com/otoze5/edit)。 – 2011-05-10 15:32:03

回答

1

append返回jQuery对象的选择/对象,你传递给它,所以你的第一行是获得jQuery对象周围document.body,而不是jQuery的包装为您的新div。你可能想appendTo

this.loader = $('<div class="loader" style="display:none">loader</div>').appendTo(document.body); 
this.loader.fadeIn(1000); 

或者更长的(但也许更清晰的方式):

this.loader = $('<div class="loader" style="display:none">loader</div>'); 
this.loader.appendTo(document.body); 
this.loader.fadeIn(1000); 

另外请注意,你的东西拿回来已经是一个jQuery对象,所以你不需要使用$()就可以了。

+0

谢谢..但你怎么可以在jQuery删除/删除DOM节点? – clarkk 2011-05-10 15:16:50

+0

@clarkk:删除?你的问题是关于创作,不是吗?但是要删除一个DOM元素,你可以使用jQuery的'remove'功能。 – 2011-05-10 15:22:05

1

追加函数不返回你所想的,我相信价值。你应该做这样的事情:

var myDiv = $('<div class="loader" style="display:none">loader</div>'); 
$(document.body).append(myDiv); 

myDiv.fadeIn(1000);