ASP.NET Update Panel останавливает работу jquery
-
05-07-2019 - |
Вопрос
Я связал события jquery, установленные для mouseenter mouseleave, а также jquery dragggable. Div помещаются в панель обновлений, и при нажатии кнопки информация отправляется в базу данных, а панель обновлений обновляется. Однако при обновлении панели события jquery больше не работают. Есть идеи, почему это так?
Решение
Вы можете добавить на свою страницу асинхронный триггер для вызова функции 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
});
Брайан получил ответ. Я обычно добавляю это с некоторыми обработчиками событий для скинов и так далее, которые запускаются после PostBacks с этим:
/**
* .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