jQuery:创建一个新的 DOM 元素并显示它

Posted

技术标签:

【中文标题】jQuery:创建一个新的 DOM 元素并显示它【英文标题】:jQuery: Creating a New DOM element and showing it 【发布时间】:2010-11-06 23:49:56 【问题描述】:

所以正如标题所示,我希望创建一个新的 dom 元素(html 是通过 AJAX 生成和检索的)。我有点让它工作,但它似乎被隐藏了,当我尝试淡入时它打破了!

   function AddContent(Content) 
        div = document.createElement(Content)
        div.appendTo($("#contentAreas"));
        //    $(div).fadeIn("slow");
        

它基本上将项目插入到正确的位置,但不显示它。当我尝试淡入它时,它没有这样做。没有错误。

有什么想法吗?

【问题讨论】:

你能描述得更详细些吗? 如何打破? “内容”是什么样的? “#contentAreas”是什么样的? 另外,如果你这样做会发生什么: $("#contentAreas").append(div); 【参考方案1】:

应该是$(div).appendTo(...)。或者您可以将 div 的创建方式更改为 div = $(Content),也许。

【讨论】:

【参考方案2】:

不需要createElement,jQuery构造函数可以带html作为参数(假设content是html字符串):

function AddContent(content) 
   var div = $(content);
   div.appendTo($("#contentAreas"));
   $(div).fadeIn("slow");

【讨论】:

【参考方案3】:

这个怎么样:

   function AddContent(Content) 
        div = $('<div>' + Content + '</div>');           
        div.appendTo($("#contentAreas")).fadeIn("slow");
   

【讨论】:

【参考方案4】:

div 必须是 jQuery 才能使 appendTo 工作。试试这个:

 function AddContent( content ) 
     $(content).appendTo("#contentAreas").fadeIn("slow");
 

【讨论】:

Damien,请注意 appendTo 需要一个选择器,因此您只需执行 .appendTo("#contentAreas")。无需无缘无故地创建另一个 jquery 对象 @redsquare -- 感谢您指出这一点。我已经更新,因为它使代码更干净。不过,在内部,我认为 appendTo 做的第一件事是 jQuery(selector)。 @tvanfosson -- 确实有助于节省一些按键操作!!【参考方案5】:

appendTo 接受一个选择器,因此它不需要是一个 jquery 对象,因为上面的所有其他示例都有它。

function AddContent( content ) 
     $(content).appendTo("#contentAreas").fadeIn("slow");
 

【讨论】:

以上是关于jQuery:创建一个新的 DOM 元素并显示它的主要内容,如果未能解决你的问题,请参考以下文章

jQuery_DOM学习之------创建节点及节点属性

用jq创建出来的虚拟DOM应如何添加事件

jquery 对话框在显示时更改它的 dom 位置

遍历祖先同胞后代

DOM节点的插入(jQuery)

如何监听dom元素的显示隐藏事件