ASP.NET 업데이트 패널이 jquery 작동을 중지합니다.
-
05-07-2019 - |
문제
jquery draggable뿐만 아니라 mouseenter mouseleave에 대해 설정된 jquery 이벤트를 바인딩했습니다.div는 업데이트 패널에 배치되며 버튼을 클릭하면 정보가 데이터베이스로 전송되고 업데이트 패널이 업데이트됩니다.그러나 패널이 업데이트되면 jquery 이벤트가 더 이상 작동하지 않습니다.왜 이런 일이 발생하는지 아시나요?
해결책
비동기 트리거를 페이지에 추가하여 비동기 호출 후 JavaScript/JQuery 함수를 호출 할 수 있습니다.
이 코드를 ASPX 코드의 page_load ()에 배치하십시오.
//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 버전과 결합하면 비동기 포스트백도 처리할 수 있습니다.
이것을보세요 블로그 게시물 Async 업데이트 후 몇 가지 방법을 제공하는 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
제휴하지 않습니다 StackOverflow