Невозможно удалить строку из таблицы, созданной jQuery - PullRequest
1 голос
/ 04 января 2010

Я создаю таблицу, основанную на результатах сервлета, которая содержит флажок. Если свойство checkbox установлено в true, в нижней части таблицы будет одна кнопка, которая вызывает функцию удаления, которая удаляет эту конкретную строку Исходя из таблицы, эта функция работает, когда таблица создается внутри jsp с использованием тегов сервера, но когда она создается из метода jQuery .getJSON, она не работает. Код.

var contents="";
$.getJSON("trnReceipt?caseNo=21&insid="+cdid.text(),function(datalist) {

    $.each(datalist, function(index, data) {
        contents += '<tr><td><input type="hidden" id="txt_select'+index+'" name="txt_select'+index+'" value='+data.return_status+'></input><input type="checkbox" name="chk_select'+index+'" /></td><td><input type="hidden" name="txtInstrid'+index+'" value="'+data.Instrumentid+'"/>' + data.Instrumentid +  '</td></tr>';
        index++;
    })

    $('#tblDetails').append(contents);
})

Код Javascript для удаления строки:

function deleteRow(tableID) {

    try {
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;

        for(var i=0; i<rowCount; i++) {
            var row = table.rows[i];
            var chkbox = row.cells[0].childNodes[0];

            if(null != chkbox && true == chkbox.checked) {
                table.deleteRow(i);
                rowCount--;
                i--;
            }
        }
    } catch(e) {
        alert(e);
    }
}

Где я совершаю ошибку?

Ответы [ 2 ]

2 голосов
/ 04 января 2010

Вы можете использовать jQuery для удаления строк следующим образом:

$('#' + tableId + ' tr:has(td :checkbox:checked)').remove();

При этом будут удалены все строки, в которых установлен флажок.

Возможно, ваша проблема в том, что вы смотрите не в ту камеру.

0 голосов
/ 04 января 2010

Первый узел в вашем теге td - это скрытое поле, а не флажок. Таким образом, в строках, полученных из метода getJson, переменная chkbox фактически не является вашим флажком, и, следовательно, критерии удаления строки всегда будут ложными.

Пока вы уже используете jQuery, рассмотрите возможность использования jQuery для фактического удаления. Он будет намного короче и на самом деле менее подвержен ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...