Javascript "function pageLoad ()" не очень хорошо работает с UpdatePanel - PullRequest
1 голос
/ 04 марта 2010

Итак, у меня есть эта UpdatePanel. Внутри него есть небольшая миниатюра прокрутки jQuery, которая показывает полное изображение в контейнере после отправки назад, чтобы получить полный URL-адрес изображения с сервера. Каждый эскиз в галерее прокрутки представляет собой imageButton с событием onCommand.

Происходит следующее: при нажатии на миниатюру она отправляется обратно на сервер и изменяет полный контейнер изображения. Поскольку это происходит на панели обновления, я использую javascript «function pageLoad () {}» для повторного применения моего jQuery после частичной обратной передачи. Работает отлично! После каждой обратной передачи я не теряю визуальные эффекты jQuery.

Проблема в том, что я могу вернуть к работе только один пост, прежде чем обновить страницу. Похоже, что после первой обратной передачи, представление обновляется, и pageLoad JS запускает для повторной инициализации jQuery, как и ожидалось. В следующий раз, когда я нажму на миниатюру, чтобы увидеть ее полный вид, я могу наблюдать, как на сервере выполняется событие onCommand, но с моим представлением ничего не происходит; нет полного изменения изображения, нет pageLoad () JS запуска. Ничего такого. Это похоже на то, что при обратной передаче не выполняется обратная передача и отправка данных клиенту после обработки на сервере.

Не только это, но и другие панели обновлений также испытывают тот же эффект независимо от того, есть ли в них элемент jQuery, на который будет влиять мой pageLoad () JS. Первая обратная передача обновляет панель нормально, но последующие обратные передачи, похоже, ничего не делают.

Я думаю, что проблема в JS pageLoad (), но я не уверен, что мне не хватает.

Вот метод JS, который должен запускаться после каждой полной или частичной обратной передачи и, похоже, вызывает у меня горе. Он находится в моей <голове>.

<script type="text/javascript"> 
  function pageLoad(){   
    $("div.scrollable1").unbind();
    $("div.scrollable").unbind();
    // initialize small scrollable.
    $("div.scrollable1").scrollable({size: 1,clickable: false});
    // initialize scrollable    
    $("div.scrollable").scrollable({size: 1,clickable: false}).mousewheel().find("a[rel]").overlay(); 
  }
</script>

1 Ответ

2 голосов
/ 04 марта 2010

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

Но вы можете попробовать это:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
function endRequest() {
    //Set your jquery stuff here.
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...