Добавление JQuery к контенту, загруженному с помощью AJAX - PullRequest
1 голос
/ 06 августа 2011

Я только что узнал, что вы можете использовать live() вместо bind(), чтобы убедиться, что обработчик событий все еще существует после перезагрузки содержимого с помощью AJAX ... но что я могу сделать с другими добавленными JQuery, такими как .sortable() ? У меня есть UL, который мне нужно перезагрузить после сортировки или добавления; но после перезагрузки AJAX сортировка не совсем работает ...

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

$("#sections").sortable({
                start: function (event, ui) {
                    startIndex = ui.item.index();
                },
                update: function (event, ui) {
                    $.ajax({
                        type: "POST",
                        url: "/Form/sortSections",
                        data: {
                            formID: '@(Model.formID)',
                            displayOrder: ui.item.index() + 1,
                            sectionID: $(ui.item).attr("id"),
                            startDisplayOrder: startIndex + 1
                        },
                        success: function (result) {
                            $.get("/Form/_AllSections/@(Model.formID)", function (data) {
                                $("#sections").html(data);
                            });
                        },
                        error: function (req, status, error) {
                            alert(error);
                        }
                    });
                }
            });

1 Ответ

3 голосов
/ 06 августа 2011

Используйте событие load с live(), чтобы оно запускалось при каждом добавлении элемента в DOM.

http://api.jquery.com/load-event

...