开发者

Generating elements in jQuery

i wonder if below, generating content the jQuery 1.4 way

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

or the normal "easy" way is better. any performance or benefits from either?

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

oh i just thought of 1 benefit of the 1st, i can add event handlers. is this the only benefit?

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

on a side note, if i want to add the above link in the middle of s开发者_运维百科ome content i will do ...

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

right?


You can add like anything in the 1.4.x way:

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

As for performance, I didn't benchmark it yet but I can hardly believe that this is much slower than doing

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

Depending on the markup you want to add dynamically, it can really be faster to concatenate string literals and append one chunk of html markup once. In that scenario you would need to use .live() or .delegate() handlers to have event handlers.

Maybe I misunderstand your goal in your approach at the end. Why would you construct an element with jQuery along with an event handler to lose all that information by putting just the html string into that div?

You should use .append() or .appendTo() here instead.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜