У нас есть следующий код

HTML

<html>
<head>
<script type="text/javascript">
$(document).ready(function() {

    $('.details').on('click','.remove', function() {
        $.ajax({
            url : 'remove',
            type : 'GET',
            success : function(event) {
                  event.preventDefault();
                  $(this).closest("tr").remove();
            }
        });
    }

});
</script>
</head>
<html>
 <div class="details">
    <table>
     <thead>
      ...
     </thead>
     <tbody>
      <tr>
       <td><button class="remove" value="somevalue1">clickme!</button></td>
       <td><button class="remove" value="somevalue2">clickme!</button></td>
       <td><button class="remove" value="somevalue3">clickme!</button></td>
      </tr>
     </tbody>
    </table>
  </details>
</html>

К сожалению не работает, как удалить где кнопка? (конечно, функция работает, например: alert ())

ОБНОВЛЕНИЕ: проверьте сейчас ...

-1
user2363971 26 Авг 2014 в 17:17
4
Ваш html недействителен. внутри тела должны быть tr и td.
 – 
Anoop Joshi P
26 Авг 2014 в 17:18
1
В вашем html нет TR
 – 
Milind Anantwar
26 Авг 2014 в 17:18
1
Я также не вижу элемента .details в вашем HTML.
 – 
Jason P
26 Авг 2014 в 17:21

1 ответ

Лучший ответ

В вашем коде есть разные проблемы.

1, ваш HTML недействителен. Вам нужно обернуть вашу кнопку внутри tr и td

2, нет элемента с классом .details. Если такой элемент есть, он должен быть родителем таблицы. Тогда будет работать только делегирование событий.

3. Вы можете использовать .closest() вместо callong parent() дважды

Ваш html должен выглядеть так

<table>
    <thead>
        ...
    </thead>
    <tbody>
        <tr>
            <td>
                <button class="remove" value="somevalue1">clickme!</button>
            </td>
        </tr>
        <tr>
            <tr>
                <td>
                    <button class="remove" value="somevalue2">clickme!</button>
                </td>
            </tr>
            <tr>
                <td>
                    <button class="remove" value="somevalue3">clickme!</button>
                </td>
            </tr>
    </tbody>
</table>

И jquery будет

$(document).on("click", ".remove", function(e) {
    e.preventDefault();
    $(this).closest("tr").remove();

});

В приведенном выше примере я делегировал событие щелчка с помощью document. Вы можете заменить его любым другим родительским элементом, который присутствует в готовом домене.

Демо

В вашем коде editerd $(this) относится к ajax, а не к элементу, на который кликнули. Поэтому вам нужно временно сохранить его, чтобы передать его в обработчик успеха.

$('.details').on('click', '.remove', function(event) {
   event.preventDefault();
    var obj = $(this)
    $.ajax({
        url: 'storageorder-inventory-remove',
        type: 'GET',
        success: function() {

            $(obj).closest("tr").remove();
        }
    });

});
1
Anoop Joshi P 26 Авг 2014 в 17:37
Ой, ненавидь меня. Я просто копирую / вставляю (некоторые данные в html были сгенерированы функциями, например кнопками). В любом случае я обновил свой код, проверьте его сейчас. Извините за комплименты
 – 
user2363971
26 Авг 2014 в 17:34
1
Да, очень хорошо, спасибо. Поставьте мне минус за мою глупость. Спасибо
 – 
user2363971
26 Авг 2014 в 17:39