在jquery中创建html的最有效方法?

时间:2010-09-23 20:44:15

标签: jquery

我正在考虑将html添加到我的页面的最有效方法。我目前有:

jQuery("<tbody><tr class='section toggle-minus'><td colspan='3' class='toggle' id='make-"+id+"'>"+name+" (0)</td></tr></tbody>");

然后我将它添加到页面中....是否有更有效的方法或者这是什么呢?

7 个答案:

答案 0 :(得分:3)

实际上,使用jQuery创建元素的禁区方法是使用:

$(document.createElement('tbody'));

创建一个像$('<tbody></tbody>')这样的元素,比上面的方法有点

这是完成您所做工作的最佳方式:

<强>已更新

jQuery(document.createElement('tbody')).append(
    jQuery(document.createElement('tr')).append(
        jQuery(document.createElement('td'))
            .addClass('toggle')
            .html([name," (0)"].join(''))
            .attr({
                'colspan' : '3',
                'id' : ['make-',id].join('')
            })
    ).addClass('section toggle-minus')
);

您要做的最后一件事就是将其附加到文档中。使用连接是因为ie6 / 7垃圾收集在连接时会发臭。

答案 1 :(得分:1)

除了你正在做的事情之外,还有html()方法。

答案 2 :(得分:1)

就速度而言,这可能是最有效的方式。在许多情况下,jQuery允许浏览器解析HTML并且速度快......比DOM操作更快。

就我个人而言,我不喜欢制作HTML字符串并且不得不处理转义用户输入等等,所以我经常定义这个额外的方法:

$.fn.create = function(name) {
    return $(document.createElement(name));
};

您可以将其与其他jQuery函数结合使用来创建任何HTML结构

$.create("tbody").append(
    $.create("tr").attr("class": "section toggle-minus").append(
        $.create("td") /* et cetera */
    )
)
但是,有一天我肯定会为jQuery实现更好的元素构建方法。

答案 3 :(得分:1)

有几个jQuery模板插件。我建议看看以下内容:

答案 4 :(得分:0)

我会说这就是它。据我了解,最小化DOM插入次数非常重要。

答案 5 :(得分:0)

或者这样:

$([
'<tbody>',
    '<tr class="section toggle-minus">',
        '<td colspan="3" class="toggle" id="make-"', id, '">', name,' (0)','</td>',
    '</tr>',
'</tbody>'
].join(''));

答案 6 :(得分:0)

如果要重复插入HTML(例如通过循环),那么我将使用jQuery模板插件。我更喜欢微软用John Resig的原创设计制作的那个。它完成了工作。阅读它here

就像这样......

在页面部分定义模板。

<script id="myTemplate" type="text/html">
  <div>
    <h3>${headerText}</h3>
    <p>${someText}</p>
    <a href="${linkHref}">Click Me</a>
  </div>
</script>

这里有一些测试数据:

var testData = 
{
  headerText: 'Hello World',
  someText: 'A long random paragraph about nothing, or Lorem Ipsum.. yadayaya',
  href: 'http://www.stackoverflow.com/'
}

然后您可以随时随地使用模板:

$('#myTemplate').tmpl(testData).appendTo('body');

结果:

<div>
  <h3>Hello World</h3>
  <p>A long random paragraph about nothing, or Lorem Ipsum.. yadayaya</p>
  <a href="http://www.stackoverflow.com/">Click Me</a>
</div>

您可以根据需要创建复杂的结构。它易于阅读和维护。

享受:)

然后你可以反复使用它。