我正在重构一些旧的JavaScript代码,其中有很多DOM操作。

var d = document;
var odv = d.createElement("div");
odv.style.display = "none";
this.OuterDiv = odv;

var t = d.createElement("table");
t.cellSpacing = 0;
t.className = "text";
odv.appendChild(t);

我想知道是否有一个更好的方法来做到这一点使用jQuery。我一直在尝试:

var odv = $.create("div");
$.append(odv);
// And many more

但我不确定这样是否更好。


当前回答

我刚刚做了一个小的jQuery插件:https://github.com/ern0/jquery.create

它遵循你的语法:

var myDiv = $.create("div");

DOM节点ID可以指定为第二个参数:

var secondItem = $.create("div","item2");

严重吗?不。但是这个语法比$("<div></div>")更好,而且它的价值非常高。

我是一个新的jQuery用户,从DOMAssistant切换过来的,它有类似的功能:http://www.domassistant.com/documentation/DOMAssistantContent-module.php

我的插件更简单,我认为attrs和内容最好通过链接方法添加:

$("#container").append( $.create("div").addClass("box").html("Hello, world!") );

同时,它也是一个简单的jquery插件(第100个)的好例子。

其他回答

我刚刚做了一个小的jQuery插件:https://github.com/ern0/jquery.create

它遵循你的语法:

var myDiv = $.create("div");

DOM节点ID可以指定为第二个参数:

var secondItem = $.create("div","item2");

严重吗?不。但是这个语法比$("<div></div>")更好,而且它的价值非常高。

我是一个新的jQuery用户,从DOMAssistant切换过来的,它有类似的功能:http://www.domassistant.com/documentation/DOMAssistantContent-module.php

我的插件更简单,我认为attrs和内容最好通过链接方法添加:

$("#container").append( $.create("div").addClass("box").html("Hello, world!") );

同时,它也是一个简单的jquery插件(第100个)的好例子。

创建新的DOM元素是jQuery()方法的核心特性,请参见:

http://api.jquery.com/jQuery/#creating-new-elements 特别是http://api.jquery.com/jQuery/#example-1-1

我是这样做的:

$('<div/>',{
    text: 'Div text',
    class: 'className'
}).appendTo('#parentDiv');

这一切都非常直截了当!这里有几个简单的例子…


var $example = $( XMLDocRoot );

var $element = $( $example[0].createElement('tag') );
// Note the [0], which is the root

$element.attr({
id: '1',
hello: 'world'
});

var $example.find('parent > child').append( $element );

简单地提供你想要添加到jQuery构造函数的元素的HTML $()将从新建的HTML返回一个jQuery对象,适合使用jQuery的append()方法追加到DOM中。

例如:

var t = $("<table cellspacing='0' class='text'></table>");
$.append(t);

然后,如果您愿意,可以通过编程方式填充这个表。

这使您能够指定任何您喜欢的HTML,包括类名或其他属性,您可能会发现这比使用createElement然后通过JS设置cellSpacing和className等属性更简洁。