2

私は物事を短くする方法をjQueryで学んでいます。このスクリプトをもう少し冗長な方法で表現できるかどうか疑問に思っていましたか? すべてが 1 つの大きな線上にあるのが好きではありません。

   items.push('<li id="' + key + '">' + ' (key: ' + key + ')(value: ' + val.value +         ')(type: ' + val.type + ') (range: ' + val.range + ') (clone: ' + val.clone + ') (archive: ' + val.archive + ') (access: ' + val.access + ')</li>')
4

4 に答える 4

2

オブジェクトが常に正しいキー/値を持つと仮定すると:

str = '';
for (var item in val) {
   str += '(' + item + ': ' + val[item] + ')';
}
$("<li>").attr('id', key).text(' (key: ' + key + ')' + str);

http://jsfiddle.net/36Nyu/

于 2012-11-28T23:25:18.243 に答える
1

別の要素の場合items、このようなことができます。

var str;

for(var i in val)
    str += '('+ i +': '+ val[i] +')';

$('<li>', {
    id: key,
    text: str
}).appendTo(items);
于 2012-11-28T23:26:46.117 に答える
0

オブジェクトにすべてのキーと値のペアを追加していると仮定すると、次のvalようなことを行うと、かなり保守しやすくなります。

var liPrefix = '<li id="' + key + '">(key: ' + key + ')',
    liSuffix = '</li>',
    liData = '';

$.each(val, function(k, v) {
    liData += ' (' + k + ': ' + v + ')';
});

items.push(liPrefix + liData + liSuffix);

デモを見る

于 2012-11-28T23:30:23.817 に答える
0

jquery tmpl などを使用できます。

var template = '(key: ' + key + ')(value: {{value}})(type: {{type}}) (range: {{range}}) (clone: {{clone}}) (archive: {{archive}}) (access: {{access}})';
$('<li />').attr('id', key).html($.tmpl(template, val));

または、同等の string.Format を使用します。

String.prototype.format = function () {
    var args = arguments;
    return this.replace(/\{\{|\}\}|\{(\d+)\}/g, function (m, n) {
        /* Allow escaping of curly brackets with {{ or }} */
        if (m === '{{') { return '{'; } else if (m === '}}') { return '}'; }
        return typeof args[n] != 'undefined' ? args[n] : '{' + n + '}';
    });
};
var text = '(key: {0})(value: {1})(type: {2}) (range: {3}) (clone: {4}) (archive: {5}) (access: {6})'.format(key, val.type, val.range, val.clone, val.archive, val.access);
于 2012-11-28T23:21:46.747 に答える