2012-09-14 57 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来设计它。

相关问题