0

私は次のコードを持っています:

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

これは元々、私が1つに連結した3つの追加でした。このコードをさらにクリーンアップするjQueryでできることはありますか?私が疑問に思っていたのは、jQueryに、使用できるトークンを使用した文字列フォーマットがあるかどうかということでした。

4

3 に答える 3

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);
于 2012-09-14T06:20:09.263 に答える
1

afaik組み込みはありませんが、強力なテンプレートサブシステムです。jQueryテンプレートを参照してください。

完全を期すために、これはもっとエレガントにできると思います。

var list = $('#stats-list');
$('<li />').text('Elapsed: ' + ajaxElapsed).appendTo(list);
$('<li />').text('Display: ' + tableElapsed).appendTo(list);
$('<li />').text('Total: ' + (ajaxElapsed + tableElapsed)).appendTo(list);
于 2012-09-14T06:05:07.467 に答える
1

+あなたがたくさんのアイテムを持っているならば、あなたはこのようなことをすることができますli。配列内に任意の数のアイテムを追加でき、それらはlisで適切に結合されます。

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

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

注意として、私は使用しません\nliはデフォルトでブロック要素であるため、cssを使用してスタイルを設定することをお勧めします。

于 2012-09-14T06:17:26.433 に答える