Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 26

Создание строки в таблице

23.10.2014, 05:02. Показов 3211. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, как средствами jquery создать новую строку в таблице, с количеством ячеек, как в предыдущей строке?

На нативном джаваскрипте функция у меня выглядит так:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function addRow (tableID)
{
var tbl = document.getElementById (tableID);                
var rws = tbl.rows;                                          
var lst = rws [rws.length - 1];                              
var cls = lst.cells.length;                                    
 
var ro = tbl.insertRow (1);                                   
for (var j = 0; j < cls; j++)                                  
   {
   var ce = ro.insertCell (-1);                                
   ce.innerHTML = '';        
   }
   
var cedit = ro.insertCell (-1);
cedit.innerHTML = '<input type="button" id="ok" value="ok" onclick=""><input type="button" id="del" value="del" onclick="DelRow(this)"> ';
}
Как переписать ее c использованием jquery?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2014, 05:02
Ответы с готовыми решениями:

Создание строки в таблице
Привет всем. Помогите пожалуйста. есть шапка таблицы из пяти колонок, внизу есть кнопка &quot;Добавить строку&quot;. Как с помощью...

Создание новой строки в таблице
Имеется код для создания новой строки в таблице БД procedure TForm1.Button1Click(Sender: TObject); begin DataModule2.AdoQuery1.close;...

Создание строки в таблице базы данных
Есть простая форма с одной кнопкой . При нажатии нужно чтобы в БД создавалась новая строчка. Как это сделать?

5
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2014, 10:28
Цитата Сообщение от kristalic Посмотреть сообщение
создать новую строку в таблице
Строка будет добавляться в конец таблицы? И нужно ли копировать содержимое предыдущей строки? Это уточните, а пока такой примерчик.
JavaScript
1
2
3
4
5
6
var tbl = $('#tbl');
tbl.on('click', '.copy', function(){
    var prevTr = $(this).closest('tr').prev('tr').clone();
    prevTr.find('td').html('&nbsp;');
    tbl.append(prevTr);
});
1
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 26
23.10.2014, 11:50  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Строка будет добавляться в конец таблицы? И нужно ли копировать содержимое предыдущей строки? Это уточните, а пока такой примерчик.
Спасибо, пока ждал ответа написал свою функцию:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
    $("#q").each(function () {
         var tds = '<tr>';
         jQuery.each($('tr:last td', this), function () {
             tds += '<td>' +'&nbsp;'+ '</td>';
         });
         tds += '</tr>';
         if ($('tbody', this).length > 0) {
             $('tbody', this).append(tds);
         } else {
             $(this).append(tds);
         }
     });
Но после реализации начались другие проблемы Теперь меня мучает вопрос, как в свежесозданных ячейках редактировать записи с помощью ранее созданной функции (как написать которую, кстати, подсказали тоже вы).

К сожалению, я пока еще практически не имею опыта в работе с Jquery, и буду вам признателен, если вы посмотрите на этот пример и подскажете, как правильно вызывать функцию добавления строки так, чтобы все кнопки "сохранить/очистить/отмена" продолжали работать в свежесозданных ячейках.

Что касается ответов на ваши вопросы, то в идеале:
1. Строка должна создаваться в самом верху таблицы
2. Содержимое предыдущей строки копировать не нужно, нужно создавать ее с пустыми ячейками
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2014, 12:12
kristalic, Начнём с того, что $("#q").each() не имеет смысла, т.к. элемент #q - уникальный. Во-вторых, делегирование у вас не совсем правильное.
JavaScript
1
2
3
$('paren_static').on('event', 'dinamic_child', function(){
  
});
У вас же селектор "paren_static", указывает на элемент td, который был динамически добавлен.
Я ничего не имею против, но вы действительно хотите "собирать" новую строку именно так, как делаете сейчас?
0
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 26
23.10.2014, 12:42  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
kristalic, Начнём с того, что $("#q").each() не имеет смысла, т.к. элемент #q - уникальный. Во-вторых, делегирование у вас не совсем правильное.
Код JavaScript
1
2
3
$('paren_static').on('event', 'dinamic_child', function(){
});
У вас же селектор "paren_static", указывает на элемент td, который был динамически добавлен.
Я ничего не имею против, но вы действительно хотите "собирать" новую строку именно так, как делаете сейчас?
Конечно же нет, просто это было единственным наспех придуманным решением

Цитата Сообщение от Lazy_Den Посмотреть сообщение
Код JavaScript
1
2
3
$('paren_static').on('event', 'dinamic_child', function(){
});
Вот в этом то месте я и запутался. Не понял как правильно написать.

Пишу, например, так:

JavaScript
1
2
3
4
5
$('table').on('click','.cancel', 'td', function() {
var ri=$(this).parent('td').parent().index();
var ci=$(this).parent('td').index(); 
$(this).parent('td').text(myTableArray[ri][ci]).removeClass('edited');
});
Функция срабатывает, но

JavaScript
1
2
3
4
5
6
$('table').on('click', 'td', function () { 
    
if($(this).hasClass('edited')) return false;
$(this).html($(inpMin).val($(this).text())).append(butMin).append(butCl).append(butCan).addClass('edited'); 
    
});
срабатывает вслед за ней
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2014, 13:20
Лучший ответ Сообщение было отмечено kristalic как решение

Решение

kristalic, дайте пару минут...

Добавлено через 27 минут
В общем, набросал вам такой вариант. Думаю, что так вам будет проще разобраться и уже допилить код так, как нужно вам. Если какие-то моменты не совсем будут ясны, то спрашивайте.
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
var tbl = $('#q'),
    ctrlPanel = '<p class="ctrl"><input type="text" class="edit"><br><button class="save">save</button><button class="clear">clear</button><button class="cancel" >cancel</button></p>';
 
/*
* Добавление строки
*/
$('.addrow').click(function(){
    var newLine = $('tr:last',tbl).clone();
    newLine.find('td').html('&nbsp;');
    tbl.prepend(newLine);
});
/*
* Добавление колонок
*/
$('.addcol').click(function(){
    $('tr',tbl).each(function(i, el){
        $(el).append('<td>&nbsp;</td>');
    });
});
/*
* Добавляем панель управления
*/
tbl.on('click', 'td', function(){
    var $that = $(this);
    if($that.hasClass('edited')) return false;
    var txt = $that.addClass('edited').text();
    $(ctrlPanel).appendTo($that).find('.edit').val(txt);
});
/*
* Сохранение, очистка, выход
*/
var actions = {
    save: function(el){
        var but = $(el),
            td = but.closest('td');
        td.text(but.siblings('.edit').val());
        return this.stopEdit(td);
    },
    clear: function(el){
        $(el).siblings('.edit').val('');
        return false;
    },
    cancel: function(el){
        return this.stopEdit($(el).closest('td'));
    },
    stopEdit: function(td){
        td.removeClass('edited').find('.ctrl').remove();
        return false;
    }
};
tbl.on('click', '.ctrl button', function(e){
    e.stopPropagation();
    actions[$(this).attr('class')](this);
});
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2014, 13:20
Помогаю со студенческими работами здесь

Word: Создание итоговой строки в таблице
Добрый день! Передо мной стоит задача заполнить таблицу данными в Word с результатом. задачу заполнения таблицы я решил, а вот как сделать...

Создание отчета для одной строки в таблице
Здравствуйте. такая проблема - мне необходимо создать отчет &quot;консультационное исследование специалиста&quot; из форм &quot;карточка...

Триггер на создание новой строки в другой таблице
Есть таблицы Product и Order. В таблице Product находятся столбцы: ProductID, MakerID, Model, ColorID, DescriptionID, Price, SaleID,...

Создание в таблице кнопки удаления записи из БД для каждой строки
&lt;?php include(&quot;../db.php&quot;); $res = mysqli_query($db,&quot;SELECT * FROM turnir&quot;); $turnir = mysqli_fetch_array($res); ?&gt; &lt;html&gt; ...

Найти строки в таблице, которых нет в другой таблице
Здравствуйте! Помогите, пожалуйста, составить запрос. Думаю думаю, никак не могу сообразить. Значит есть таблица: phones ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru