在jQuery中生成元素

时间:2010-07-16 09:06:29

标签: jquery

我想知道是否在下面,生成jQuery 1.4方式的内容

$("<div />", {
  "class": "loading",
  "html": "some html code here"
}).appendTo("#elem");

或正常的“简单”方式更好。是否有任何表现或好处?

$("#elem").append("some html code here");

哦,我只想到了第一个的1个好处,我可以添加事件处理程序。这是唯一的好处吗?

var a = $("<a />", { href: "#", click: function() {}, text: "link text"});

在附注中,如果我想在某些内容中添加上述链接,我会做...

var a = $("<a />", { href: "#", click: function() {}, text: "link text"});
var div = $("<div />", { html: "here is some content " + a.html() + " here is more html" });

正确?

1 个答案:

答案 0 :(得分:3)

您可以anything方式添加1.4.x

$('<div/>', {
     'class:'    'someclass',
     css:        {
          width: '200px',
          height:'200px'
     },
     click:      function(e){
          alert($(this).data('mydata'));
     },
     data:       {
          mydata: 'Yay!'
     }
});

至于性能,我还没有对它进行基准测试,但我很难相信这比做

慢得多
$('<div></div>').click(function(){}) // etc.

根据您要动态添加的标记,连接string literals并添加一个html markup块一次真的会更快。 在这种情况下,您需要使用.live().delegate()处理程序来event handlers

也许我在最后的方法中误解了你的目标。为什么要将jQueryevent handler一起构造一个元素,通过将html字符串放入该div中来丢失所有信息?

您应该在此使用.append().appendTo()

var a = $("<a />", { href: "#", click: function() {}, text: "link text"});
var div = $("<div />").append(a);