2011-09-13 87 views
0

我搜索了互聯網和人們建議使用數組然後做arr.join(),但後來有人認爲它在Firefox中速度較慢,什麼是正確的方法?Javascript中正確的連接方法是什麼?

$.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>'); 
    }); 

感謝

+0

那麼這取決於,你在做什麼? –

+0

正確的方法... http://jsperf.com它,看看! – Matt

+0

看看@ http://stackoverflow.com/questions/51185/are-javascript-strings-immutable-do-i-need-a-string-builder-in-js - 有基準 –

回答

0

丹是對的,使用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> 
1

我會建議使用jQuery的從一個模板引擎如tmpl()。這可能不會比你在做什麼更快,但性能差異是微不足道的。如果沒有合適的模板工具,那麼構建html的方法(如你所做的)可能會變得非常難看。

相關問題