Посмотрите на шаблон плагина.
http://plugins.jquery.com/project/jquerytemplate
Ваш код может выглядеть так,
$.getJSON("api/test",
function(data)
{
var t = $.template('<tr><td><input type="radio" name="{name}"/><td>{name}</td><td>{descr}</td></tr>');
$.each(data, function()
{
$("#tests").append(t, this);
}
}
);
EDIT
Как RedSquare правильно указывает, если у вас есть большое количество строк, делая манипуляции DOM в каждой итерации может быть очень медленным. Не изменяйте свой код, если вы не профилировали свой код и не обнаружили, что этот конкретный цикл является узким местом.
Если я одолжить 'string.Format' method from this post, вы можете сделать что-то вроде
$.getJSON("api/test",
function(data)
{
var template = '<tr><td><input type="radio" name="{name}"/><td>{descr}</td><td>{1}</td></tr>';
var html = [];
$.each(data, function()
{
html.push(template.format(this));
}
$('#tests').append(html.join(''));
}
);
EDIT: Modified the string.Format function взять ключ на основе имени. Теперь ваш код шаблона может использовать {name}, {descr} вместо использования {0}, {1}. Функция попытается найти свойство с тем же именем в аргументе, переданном функции.
Кроме того, посмотрите на подход Рика Страйла и посмотрите, имеет ли он больше смысла для вас.
http://www.west-wind.com/WebLog/posts/300754.aspx
+1: Мне нравится, спасибо – dfa
замечательные. Так вы примете ответ? :) – SolutionYogi
Мне также нравятся варианты: P – dfa