2012-09-14 84 views
0

我有以下代碼:jQuery中是否有任何字符串格式化函數?

$("#stats-list") 
    .append("<li>Elapsed: " + ajaxElapsed + "</li>\n" + 
      "<li>Display: " + tableElapsed + "</li>\n" + 
      "<li>Total: " + (ajaxElapsed + tableElapsed) + "</li>"); 

這原本是3個追加到我連接成一個。有沒有什麼我可以用jQuery來做,這將更清理這些代碼。我想知道的是,如果jQuery有任何字符串格式與我可以使用的令牌。

+0

這http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format這http://stackoverflow.com/questions/1038746/equivalent-of-string-格式在jQuery中看起來像你要求的。 –

回答

2
function format(formatString) { 
    var args = Array.prototype.slice.call(arguments,1); 
    return formatString.replace(/\{(\d+)\}/g, function(match, num) { 
     return args[Number(num)]; 
    }); 
} 

format("<li>Elapsed: {0}</li>\n<li>Display: {1}</li>\n<li>Total: {2}</li>", 
    ajaxElapsed, tableElapsed, ajaxElapsed + tableElapsed); 
+0

任何想法爲什麼格式不作爲JavaScript核心功能的一部分? –

+0

Ecma可能不認爲有必要。正如你上面看到的那樣,你自己很容易實現。 –

1

AFAIK有沒有內置的,但強大的模板子系統,看到的只是爲了完整性jQuery Templates

,我覺得可以這樣做更優雅:

var list = $('#stats-list'); 
$('<li />').text('Elapsed: ' + ajaxElapsed).appendTo(list); 
$('<li />').text('Display: ' + tableElapsed).appendTo(list); 
$('<li />').text('Total: ' + (ajaxElapsed + tableElapsed)).appendTo(list); 
+0

你認爲我可以使用JavaScript格式嗎?我幾乎沒有JavaScript的知識,所以我將不得不看看? –

+0

肯定你可以使用它? – TheHe

+0

剛剛編輯我的答案... – TheHe

1

如果你有很多的項目你可以做這樣的事情,以避免錯失+和寫li很多次。您可以在數組內添加任意數量的項目,並且它們將與li相適應。

var list = '<li>' + [ 
    'Elapsed: ' + ajaxElapsed, 
    'Display: ' + tableElapsed, 
    'Total: ' + ajaxElapsed + tableElapsed 
].join('</li><li>') + '</li>'; 

$("#stats-list").append(list); 

作爲說明我不會使用\nli默認情況下是一個塊元素,所以你最好用css來設計它。

相關問題