Jquery необходимо перепривязать события при частичной обратной передаче страницы - PullRequest
6 голосов
/ 17 апреля 2009

Как я могу перепривязать свои события (jquery), когда я выполняю частичный постбэк?

Я все подключаю, используя:

$(document).ready(function(){};

После частичного постбэка мои события не запускаются.

Ответы [ 5 ]

10 голосов
/ 17 апреля 2009

Вы можете нажать на PageRequestManager endRequestEvent:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(){});

Или, если вы пытаетесь прикрепить управляющие события, вы можете использовать jQuery live events .

Другой вариант - выполнить делегирование событий вручную. Это то, что делают «живые» мероприятия под прикрытием. Присоедините обработчик события к самому документу, а затем условно выполните свой метод, если отправитель события был ожидаемым элементом.

$(document).click(function(e){  
    if($(e.target).is(".collapseButton")){  
        $(this).find(".collapsePanel").slideToggle(500);  
    }  
})  
6 голосов
/ 17 апреля 2009

Я предполагаю, что из "частичного постбэка" вы работаете на земле Asp.net.

Попробуйте использовать

Sys.Application.add_load(function() { });

Вы по-прежнему сможете использовать все обычные функции jQuery внутри этой функции.

2 голосов
/ 17 апреля 2009

Проверьте "живую" функцию jQuery 1.3 здесь . Вы можете добавлять события в будущие элементы, а также текущие элементы на странице. Это может упростить код, который вам нужно написать.

0 голосов
/ 23 января 2015

Самое элегантное решение (с использованием jQuery 2.x) это:

Используйте событие «on». Убедитесь, что вы связали событие с документом, а не с самим элементом!

Пример кода:

$(document).on('click', 'div.messages', function () {
    console.log('click on div.messages');
    return false;
});

Поместите этот код в document.ready, например.

Это работает, даже если div.messages изменено или создано внутри UpdatePanel. И его никогда не запускают дважды или более раз за раз.

0 голосов
/ 17 апреля 2009

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

...