проблема обратной передачи при совместной работе с ajax updatepanel и jquery - PullRequest
1 голос
/ 20 февраля 2011

Я работаю над asp.net и jquery.Я использовал updatepanel и jquery вместе.Все хорошо.Но иногда сталкиваюсь с проблемой обратной передачи.Предположим, что после запуска страницы я тестирую вызов jquery, который вызывает метод page той же страницы.После некоторого события кнопка отправки не работает.Я нажимаю несколько раз, но это ничего не делает.Я не могу найти проблему.

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Когда вы подключаете свои события в jquery, они привязываются к элементам dom, которые заменяются панелью обновлений.Следовательно, события, которые вы подключили, теряются, так как их элемент dom уничтожается замещающими элементами панели обновления.

Вы можете использовать $ ("MySelector"). Live ('click', function () {alert ('hi ')});

Работает, прикрепляя обработчик событий для щелчка мышью в корневом узле вашей страницы, который запускается, когда исходный источник соответствует критериям селектора.События будут пузыриться до тех пор, пока они не будут обработаны и отменены.Это действительно удобный инструмент для работы с любым кодом, в котором вы динамически заменяете или добавляете кнопки.Это особенно полезно, когда вам не повезло иметь дело с панелями обновления.

Вы также можете заглянуть в .delegate.Это позволило бы вам определить функцию в родительском узле в dom, который находится ближе (таким образом, событие всплывет меньше и даст вам большую эффективность).Я всегда был в порядке с использованием .live

0 голосов
/ 20 февраля 2011

Если jQuery, связанный с нажатием кнопки, обернут в $ (документ). Уже он потеряет действие jQuery, связанное с ним при обратной передаче панели обновления. Microsoft asp.net Ajax автоматически вызывает функцию с именем pageLoad, поэтому сделайте следующее.

Настройте это так:

Pageload () { $ ( '# Button1'). Нажмите (функция () { //сделай что-нибудь }); }

Не это:

$ (документ) .ready (функция () { $ ( '# Button1'). Нажмите (функция () { //сделай что-нибудь }); });

...