2012-06-17 5 views
1

Я должен добавить строки в таблицу с JQuery:Dynamic DOM элементы создания

<table class="table"> 
     <tbody id="dh-values"> 
     </tbody> 
    </table> 

я написал следующий код:

function displayHash(fieldName) { 
    $('#dh-values').append('<tr></tr>').append('<td id="dh-'+fieldName+'">'+$('#'+fieldName).val()+'</td>').append('<td id="dh-'+fieldName+'-h">'+hex_sha1($('#'+fieldName).val())+'</td>'); 
    }; 

Но это выглядит ужасно. Есть ли способ упростить это?

+2

Вы фактически добавляете 'td' to 'tbody' – Esailija

+0

Вам нужен только один вызов' .append() '. Вы можете построить целую строку '' и добавьте ее один раз. Однако это не обязательно красиво. –

+1

Это выглядит ужасно, потому что вы «цепляетесь». Отделите вызов каждого метода на новую строку. Фрагмент может также использовать некоторые переменные. –

ответ

1

Комбинированный ответ Esalija, amnotiam и др

DEMO

function displayHash(fieldID) { 
    var val = $('#'+fieldID).val(); 
    var valSha = hex_sha1(val); 
    $("<tr>").appendTo("#dh-values") 
     .append('<td id="dh-'+fieldID+'">'+val+'</td>') 
     .append('<td id="dh-'+fieldID+'-h">'+valSha+'</td>'); 
}; 
+1

все еще добавляет к 'tbody' хотя – Esailija

+0

' .append' возвращает объект jQuery, на котором он работает – Esailija

+0

Да, все еще делаю это. –

0

Вы должны использовать client side templating engine отделить HTML структуру и бизнес-логику для работы с данными, которые будут переплетены с шаблоном в javascript.

Смежные вопросы