0

我在网上搜索过,人们建议使用数组然后做 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>');
    });

谢谢

4

2 回答 2

1

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

于 2011-09-13T14:09:24.123 回答
0

丹是对的,使用jQuery 模板是要走的路。以下是一些示例代码,可帮助您了解它的强大程度:

<!-- 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>
于 2011-09-13T14:21:09.113 回答