ASP.NET Update Panelはjqueryの動作を停止します
-
05-07-2019 - |
質問
mouseenter、mouseleave、jQueryドラッグ可能に設定された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バージョンと組み合わせることで、非同期ポストバックも処理できます
こちらをご覧ください Encosiaのブログ投稿では、非同期更新後に再バインドする方法をいくつか提供しています。これで問題が解決し、同様の問題が解決したことがわかりました。
live を使用します。
$("div").live("mouseenter", function(){
// do something
});
Bryanが答えを見つけました。通常、スキニングなどのために、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
所属していません StackOverflow