用jQuery创build一个新元素的首选方法

我有两种方法可以使用jQuery创build一个<div>

或者:

 var div = $("<div></div>"); $("#box").append(div); 

要么:

 $("#box").append("<div></div>"); 

使用除可重用性以外的其他方法有什么缺点?

第一个选项给你更多的灵活性:

 var $div = $("<div>", {id: "foo", "class": "a"}); $div.click(function(){ /* ... */ }); $("#box").append($div); 

当然, .html('*')会覆盖内容,而.append('*')不会,但是我想这不是你的问题。

另一个好的做法是在你的jQueryvariables前添加$
在jQuery中使用$与variables有什么特定的原因

围绕"class"属性名称放置引号将使其与不太灵活的浏览器更兼容。

我个人认为代码的可读性和可编辑性比代码更重要。 无论哪一个你觉得容易看,应该是你select以上因素。 你可以把它写成:

 $('#box').append( $('<div/>') .attr("id", "newDiv1") .addClass("newDiv purple bloated") .append("<span/>") .text("hello world") ); 

和你的第一个方法为:

 // create an element with an object literal, defining properties var $e = $("<div>", {id: "newDiv1", name: 'test', class: "aClass"}); $e.click(function(){ /* ... */ }); // add the element to the body $("#box").append($e); 

但就可读性而言, jQuery方法是我的最爱 。 按照这个有用的jQuery技巧,笔记和最佳实践

更具performance力的方式,

 jQuery('<div/>', { "id": 'foo', "name": 'mainDiv', "class": 'wrapper', "click": function() { jQuery(this).toggleClass("test"); }}).appendTo('selector'); 

参考: 文档

根据jQuery官方文档

要创buildHTML元素,首选$("<div/>")$("<div></div>")

然后你可以使用appendToappendbeforeafter等。 将新元素插入DOM。

PS:jQuery版本1.11.x

我有一个新的想法,使用.html(content)

你可以在你想要的地方放一个空的<div></div> ,不要忘记为这个DIV设置一个ID。

之后,使用$("#divId").html(content)来replace您的新内容(即您要追加的DIV $("#divId").html(content)的空DIV。

如果#box是空的,什么都不是,但是如果不是这些,那么就完全不一样了。 前者将添加一个div作为#box的最后一个子节点。 后者完全用一个空的div ,text和all #box代替#box的内容。

我会推荐第一个选项,你实际上使用jQuery构build元素。 第二种方法简单地将元素的innerHTML属性设置为string,这恰好是HTML,并且更容易出错并且不太灵活。

假设我们有场景来dynamicreplace一些html标签来格式化,我们不能使用$('#id')。text(); 因为它不会接受html格式的文本 ,为了完成这些工作,我们需要使用jQuery append方法,而不是每次我们需要更新和使用append方法时.text()方法的替代方法。

  var fileImportStatus; $('#id').change(function(){ if($('#id').is(':checked')){ fileImportStatus = "<strong>ON</strong>"; }else { fileImportStatus = "<strong>OFF</strong>"; } }); $('#saveBtn').click(function(){ $('#fileImportStatusTxt').empty(); $('#fileImportStatusTxt').append('File Import is ' + fileImportStatus); }); 

也可以通过以下方式创build一个div元素:
var my_div = document.createElement('div');
添加类
my_div.classList.add('col-10');
也可以执行append()和appendChild()