用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>")
。
然后你可以使用appendTo
, append
, before
, after
等。 将新元素插入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()