Таким образом, эта известная проблема с потерями привязок jquery при обновлении панели обновления asp.net содержит много деталей при поиске в Google / SO.
Есть несколько предложенных решений. Вот код, который я имею для начальной настройки карусели jquery.
$(function() {
$('.carousel-sizes').jcarousel({ scroll: 3 });
$('.carousel-pics').jcarousel({ scroll: 1 });
});
Который работает нормально. Как только панель обновления нажата, она ломается, поскольку привязки jquery, очевидно, теряются. Итак, вот исправление, которое я применил.
if (typeof (Sys) != "undefined") {
prm = Sys.WebForms.PageRequestManager.getInstance();
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest);
}
function InitializeRequest(sender, args) {
}
function EndRequest(sender, args) {
$('.carousel-sizes').jcarousel({ scroll: 3 });
$('.carousel-pics').jcarousel({ scroll: 1 });
}
Что работает, но панель обновления теперь необычайно медленная.
Это страница .net 3.5, использующая главную страницу, менеджер сценариев объявляется на главной странице (с параметром EnablePartialRendering на всякий случай равным true) и код javascript на главной странице или на странице содержимого (без разницы медленно на любой странице). Последняя версия Jquery.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
Я добавил приведенный выше код на главную страницу / страницу с контентом вверху , и он не работает. Добавьте его в конец любой страницы (непосредственно перед закрывающим тегом BODY или закрывающим тегом CONTENT), и это работает, но бесполезно медленно.
Я отладил, и моя страница не делает ничего особенно интенсивного в том, что касается .net, отладка проходит через соответствующие события и затем зависает в течение 3-4 секунд, прежде чем обновляется панель обновления.
Есть идеи?