tr вставить после запроса ajax

0

Я новичок в jQuery и просто создал следующее: таблицу с текстовым полем над ней, таблица показывает совпадения в базе данных:

<script>
$('#searchRecept > #searchReceptAjax').keyup(function(){//Werkt dit?

    var postRecept = $.post("../ajaxhandler.php?action=searchRecept", $('#searchRecept').serialize());
    postRecept.done(function( data ) {
        var response = $("<div>" + data + "</div>").find('tbody');
        $('#recepten > tbody').replaceWith( response );
    });
});
</script>

Это прекрасно работает. До этого я создал ссылку (по одной в каждой строке tbody), чтобы вставить новую строку после этой строки:

<script>
    $('.addingredient').click(function(e){
    $('<tr><td colspan="5">test</td></tr>').insertAfter($(this).closest('tr'));                    
    });
</script>

Тон выглядит так:

<tbody>
    <tr>
        <td>Something...</td>
        <td>Something else.</td>
        <td>Probably some text here.</td>
        <td>...</td>
        <td>???</td>
        <td><a href="#" class="addingredient">aap</a></td>
    </tr>
</tbody>

Я использовал тот же php include в ajaxhandler.php (для создания ответа), как и при запросе на начальную страницу - с другим содержанием, конечно. Тем не менее, после того, как тень изменился с помощью первого фрагмента javascript, добавление строки больше не работает. Даже если те, которые поступают из ответа, имеют те же данные, что и в исходном запросе (когда строка поиска пуста).

Почему это не работает? Есть предположения?

Наилучшие пожелания,

Нильс

Теги:
tr
closest
insertafter

1 ответ

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

Вы можете использовать делегирование событий для присоединения событий для динамически создаваемых элементов:

$('body').on('click','.addingredient', function(e){
    $('<tr><td colspan="5">test</td></tr>').insertAfter($(this).closest('tr'));                    
});
  • 0
    Спасибо, что сработало. Просто для моего понимания: как я это сделал, я создал событие (щелчок) для всех элементов с «.addingredient», который существовал в то время ... Недавно созданные элементы не получили этого действия, но теперь, потому что я ищу для элементов внутри <body> это работает. Верный?
  • 0
    Да вы правы Вы также можете узнать больше информации о делегировании событий по ссылке, которую я указал в ответе.

Ещё вопросы

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