Javascript中正确的连接方法是什么?

时间:2011-09-13 14:05:01

标签: javascript optimization concat

我搜索了互联网,人们建议使用数组然后做arr.join()但是有些人认为它在firefox中速度较慢,这是正确的方法吗?

$.each(data.rows, function (i) {
        var row = data.rows[i];
        var htmlRow = '<div class="colour"><img src="' + row[3] + '" alt="' + row[1] + '" /><span>' + row[1] + '</span> <input type="hidden" value="' + row[4] + '"/></div>';

        htmlRow = htmlRow + '<div class="products">';
        for (var k = 6; k < row.length; k++) {

            htmlRow = htmlRow + $('#product').jqote(row[k], '*');
        }
        htmlRow = htmlRow + '</div>';
        $('.body-holder').append('<div class="holder">' + htmlRow + '</div>');
    });

由于

2 个答案:

答案 0 :(得分:1)

我建议使用jquery中的tmpl()等模板引擎。它可能并不比你正在做的快,但性能差异是微不足道的。如果没有适当的模板工具,那么构建html的方式(就像你正在做的那样)可能会非常难看。

答案 1 :(得分:0)

Dan是对的,使用jQuery Templates是可行的方法。以下是一些示例代码,可帮助您了解它的强大程度:

<!-- SAMPLE TEMPLATE -->
<script id="myTemplate" type="text/html">
    <li class="activity exceptionManager-observation">
        <hr />
        <table>
            <tr>
                <td valign="top">
                    <img class="icon" src="Includes/Images/symbol_error.png" alt="" border="0" />
                </td>
                <td align="left" valign="top">
                    <div class="date">${Date}</div>
                    <div class="rank">${ProjectNumber}</div>
                    <div class="message">${Message}</div>
                </td>
            </tr>
        </table>
    </li>
</script>

<script type="javascript">        
var record = {ProjectNumber: '1234', Message: 'This is my rifle! This is my gun!'};

/// <summary>Append's a record into the UI.</summary>    
function Append(record) {
    try {
        var template = $('#myTemplate').tmpl(record);
        template.prependTo('#someListInMyPage');
    }
    catch (err) {
        alert(err);
    }
}
</script>