Вставить информацию в виде метаданных в строку, а ...
<tr data-foo="additional data here" data-bar="even more data">…</tr>
И в вашем javascript небольшом волшебстве под названием .live()
:
$('#your_table .show_dialog').live('click', function(){
var data_for_dialog = {
foo: $(this).closest('tr').attr('data-foo'),
bar: $(this).closest('tr').attr('data-bar')
}
show_dialog(data); // your own code to show the dialog
});
Где у вас есть <a>
тег с классом "show_dialog". Обратите внимание, что это не очень эффективно, если у вас много атрибутов или они содержат данные, которые должны содержать переводы строк. Вы можете улучшить это, итерируя по каждому атрибуту , определенному для этого <tr>
, и автоматически включая атрибуты, начинающиеся с data-
. Это выходит за рамки этого вопроса.
Для отображения диалогового окна было бы достаточно чего-то подобного:
function show_dialog(data) {
var $dialog = $('#dialog');
for(var attr in data) {
$dialog.find("." + attr).html(data[attr]);
}
$dialog.show();
}
<div id="dialog">
<p class="data-foo"></p>
<p class="data-bar"></p>
</div>
Это не проверено, но должно проиллюстрировать, что происходит достаточно хорошо.
Примечание. Вы можете определить пользовательские атрибуты в HTML5, если они имеют префикс «data-», следовательно, они появляются везде выше.