Панель ASP.NET обновление останавливается на jQuery от работы
Я связал события jquery, установленные для mouseenter mouseleave, а также jQuery draggable. Дивы помещаются в панель обновления, и при нажатии кнопки информация отправляется в базу данных, а панель обновления обновляется. Однако при обновлении панели события jquery больше не работают. Есть идеи, почему это так?
5 ответов:
Вы можете добавить на свою страницу асинхронный триггер для вызова функции JavaScript/jQuery после любого асинхронного вызова.
Поместите этот код в Page_Load() вашего кода aspx позади:
//This script handles ajax postbacks, by registering the js to run at the end of *AJAX* requests Page.ClientScript.RegisterStartupScript(typeof(Page), "ajaxTrigger", "Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);", true); Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "EndRequest", "function EndRequestHandler(sender, args){AsyncDone();}", true);
Этот фрагмент кода специально вызовет функцию JavaScript/jQuery AsyncDone ();
Попробуйте использовать
function pageLoad(sender, args) { // JQuery code goes here }
Вместо
$(document).ready(function() { // JQuery code goes here });
Это будет работать, когда кнопка, которая находится в панели обновления нажата; она идет на сервер и повторно добавит jquery, когда он вернется. Однако это не работает с асинхронными обратными связями, вызванными таким элементом управления, как eo:AJAXUploader, но в сочетании с версией Bryans вы также можете обрабатывать асинхронные обратные связи
Взгляните на это сообщение в блоге от Encosia, которое дает вам несколько способов ребиндинга после асинхронных обновлений. Я обнаружил, что это решило мою проблему, которая была аналогичной.
Использоватьжить .
$("div").live("mouseenter", function(){ // do something });
Брайан получил ответ. Я обычно добавляю это с некоторыми обработчиками событий, для снятия кожи и так далее, которые срабатывают после обратной связи с этим:
/** * .NET Event Handlers * When new code is added on to the client by way of * .NET PostBacks, CSS is typically ignored. This method * can be used to add CSS to new elements as they are added * asynchronously. It calls a script at the end of every * partial post back request. * * @example - Core.NETEventHandlers.AsyncPostBack.Init(); */ var NETEventHandlers: { /** * Async Post Back Handler * calls a script at the end of every partial post back request */ AsyncPostBack: { EndRequest: { Add: function() { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(NETEventHandlers.AsyncPostBack.EndRequest.Handler); } // EO Add , Handler: function(sender, args) { // Handlers here. alert('Hello World'); } // EO Handler } // EO endRequest , Init: function() { Sys.Application.add_init(NETEventHandlers.AsyncPostBack.EndRequest.Add); } } // EO AsyncPostBack } // EO dotNETEventHandlers