Необходимо удалить строку, если флажок установлен

0

У меня есть решение jQuery/AJAX, настроенное для обновления и удаления элементов, отображаемых в таблице. Часть AJAX отлично работает, но как только элемент удален, мне нужно убрать его из представления, и я не могу понять, как идентифицировать выбранный элемент на основе их значения после нажатия кнопки отправки.

Здесь мой jQuery:

$('#button').click(function(event){
    var order = $("#sortable tbody").sortable("serialize");
    order += "&" + $("form[name=favorites]").serialize().replace(/%5B%5D/g, '[]');
    order += "&crudtype=update_favorites";
    $('#savemessage').html('<p>Saving changes...</p>');
    $.post("/crud",order,function(theResponse){
        $('#savemessage').html(theResponse);
      });
  });
});

Мой HTML генерируется из PHP, поэтому величины и идентификаторы являются переменными, но формат выглядит следующим образом:

<tr class="odd" id="field_37">
  <td class="handle"><a href="#">Item #1 Name</a></td>
  <td><input type="checkbox" name="fid[]" id="fid" value="37" class="box check-child"></td>
</tr>
<tr class="even" id="field_29">
  <td class="handle"><a href="#">Item #2 Name</a></td>
  <td><input type="checkbox" name="fid[]" id="fid" value="29" class="box check-child"></td>
</tr>

Так эффективно, что (я думаю) мне нужно добавить к моей функции.click что-то вроде "foreach checked fid, удалить соответствующий идентификатор строки", если это имеет смысл.

  • 0
    $('table :checkbox:checked').closest('tr').remove() ???
  • 4
    К вашему сведению: идентификатор должен быть уникальным в документе.
Теги:

2 ответа

1
Лучший ответ

Базовый переключатель, чтобы установить флажок checked

'input[type="checkbox"]:checked'

или

'input:checkbox:checked'

Теперь вы можете использовать has() или выполнить цикл и использовать ближайший, чтобы получить trs

$('input[type="checkbox"]:checked').closest("tr").remove();

или

$('tr:has(input[type="checkbox"]:checked)').remove();
  • 0
    Работает как чемпион, выбранный для простоты.
0

Вы можете сделать это следующим образом: http://jsfiddle.net/dSANw/

Когда пользователь нажмет на отмеченное поле, добавьте класс в родительский tr

$(".box").click(function() {
    if($(this).is(':checked')) {
        $(this).parents('tr').addClass('checkedtd');
    } else {
        $(this).parents('tr').removeClass('checkedtd');
    }

});

Когда вы нажимаете на delete, получите все таблицы tr classed 'checkedtd' и удалите

$("#delt").click(function() {

    alert($('.checkedtd').length);
    $('.checkedtd').remove();


});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню