Здесь вам понадобятся две или три вещи. Прежде всего, если какой-либо элемент управления, к которому вы подключаетесь, исчезает в вашей обратной записи ajax, вы захотите перехватить обработчики событий при перезагрузке страницы, используя следующее:
function pageLoad(sender, args)
{
if (args.get_isPartialLoad())
{
//Re-hook code here
}
}
или используйте функцию .live () в функции $ (document) .ready () для добавления перехватчиков событий. Эта функция хорошо документирована на сайте API JQuery UI .
Кроме того, если вы хотите, чтобы анимационный эффект что-то скрывал перед выполнением постбека (что не позволит ему измениться до завершения анимации), используйте функции .Promise (). Done () следующим образом:
$("#Detail").fadeOut().promise().done(function ()
{
__doPostBack('<%= UpdatePanel1.ClientID %>', '');
});
Наконец, когда вы хотите, чтобы анимация происходила после завершения обратной передачи, чтобы показать ее результаты, вы можете использовать все это в сочетании с логической переменной, которая включает действие в функции pageLoad, например:
var ShowDetailsOnLoad = false;
function pageLoad(sender, args)
{
if (args.get_isPartialLoad())
{
if (ShowDetailsOnLoad)
{
$("#Detail").fadeIn();
ShowDetailsOnLoad = false;
}
$('DetailVisMaker').click(function()
{
$("#Detail").fadeOut().promise().done(function ()
{
__doPostBack('<%= UpdatePanel1.ClientID %>', '');
ShowDetailsOnLoad = true;
});
});
}
}
Если div, HTML и UpdatePanel настроены правильно, этот код покажет подробный div, а когда пользователь щелкает ссылку внутри него, он исчезает из раздела подробностей, запускает постбэк, затем исчезает вернуться после завершения постбэка.