Каков правильный подход конкатенации в Javascript? - PullRequest
0 голосов
/ 13 сентября 2011

Я искал в интернете, и люди предлагают использовать массивы, а затем делать 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 ]

1 голос
/ 13 сентября 2011

Я бы рекомендовал использовать шаблонизатор, такой как tmpl () из jquery.Вероятно, это не быстрее, чем вы делаете, но различия в производительности тривиальны.Такой способ построения html (как вы это делаете), вероятно, станет очень уродливым быстро без надлежащего инструмента шаблонов.

0 голосов
/ 13 сентября 2011

Дэн прав, используя 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>
...