jQuery中是否内置了任何字符串格式化函数

Are there any string formatting functions built into jQuery?

本文关键字:字符串 格式化 函数 任何 是否 内置 jQuery      更新时间:2023-09-26

我有以下代码:

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

这最初是我连接成一个的三个附录。我能用jQuery做些什么来清理这些代码吗。我想知道的是jQuery是否有任何可以使用的带有标记的字符串格式。

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);

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);

如果您有很多项,您可以这样做,以避免丢失+和多次写入li。您可以在数组中添加任意数量的项,它们将适当地与li连接。

var list = '<li>' + [
  'Elapsed: ' + ajaxElapsed,
  'Display: ' + tableElapsed,
  'Total: ' + ajaxElapsed + tableElapsed
].join('</li><li>') + '</li>';
$("#stats-list").append(list);

注意,我不会使用'n。默认情况下,li是一个块元素,因此最好使用css对其进行样式设置。