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 に答える