Повторное переплетение событий в jQuery после обновления Ajax (updatepanel)

78
задан Peter Mortensen 17 December 2009 в 11:41
поделиться

7 ответов

Так как Вы используете Ajax ASP.NET, у Вас будет доступ к pageLoad обработчик событий, который называют каждый раз сообщениями страницы назад, быть им полный или неравнодушный от UpdatePanel. Просто необходимо вставить функцию к странице, никакое присоединение не требуется.

function pageLoad(sender, args)
{
   if (args.get_isPartialLoad())
   {
       //Specific code for partial postbacks can go in here.
   }
}
84
ответ дан Phil Jenkins 24 November 2019 в 10:32
поделиться

Или Вы могли проверить живую функциональность последнего jQuery через on() метод.

23
ответ дан David d C e Freitas 24 November 2019 в 10:32
поделиться
Sys.Application.add_load(initSomething);
function initSomething()
{
  // will execute on load plus on every UpdatePanel postback
}
21
ответ дан Paulius 24 November 2019 в 10:32
поделиться

Вы могли использовать делегация события и jQuery. В основном сцепите события с контейнерами, а не каждым элементом и запросите event.target и выполните сценарий на основе этого.

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

Быстрый пример здесь .

плагин jQuery для легкой делегации события.

P.S. я - 99%-я верная делегация, будет в ядре jQuery при следующем выпуске.

8
ответ дан Peter Mortensen 24 November 2019 в 10:32
поделиться

Используйте следующий код

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoaded);

function pageLoaded(sender, args) {
    var updatedPanels = args.get_panelsUpdated();
    // check if Main Panel was updated 
    for (idx = 0; idx < updatedPanels.length; idx++) {
        if (updatedPanels[idx].id == "<%=upMain.ID %>") {
            rebindEventsForMainPanel();
            break;
        }
    }
}
9
ответ дан 24 November 2019 в 10:32
поделиться

         <script type="text/javascript">
             function pageLoad() {

                 if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {


       }

            </script>

        </ContentTemplate>
    </asp:UpdatePanel>

В «Если» вы можете поставить код, который вам нужно выполнить каждый раз, когда UpdatePanel делает AsyncPostback.

4
ответ дан 24 November 2019 в 10:32
поделиться

Свяжите свои события с помощью нового «живого» метода jQuery. Он свяжет события со всеми вашими настоящими элементами, а также со всеми будущими элементами. Ча цзин! :)

2
ответ дан 24 November 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: