2009-07-30 181 views
5

我綁定了爲mouseenter mouseleave設置的jquery事件,以及jquery可拖動。 div放置在更新面板中,並且當單擊按鈕時,信息被髮送到數據庫並且更新面板被更新。但是,當面板更新時,jquery事件不再有效。任何想法,爲什麼會這樣?ASP.NET更新面板停止工作jquery

回答

7

您可以將一個異步觸發器添加到頁面以調用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();

1

使用live

$("div").live("mouseenter", function(){ 
     // do something 
    }); 
+0

從jQuery文檔的「現場」: 目前不支持:模糊,對焦的mouseenter,鼠標離開,變化,提交 – 2009-07-30 15:09:59

+0

對於最近發現這個問題的人來說,這不再是這種情況,jQuery 1.4和更新版本支持所有泡泡事件。 https://api.jquery.com/live/ – nyuszika7h 2014-05-04 12:49:08

3

使用

function pageLoad(sender, args) 
{ 
    // JQuery code goes here 
} 

,而不是

$(document).ready(function() { 
     // JQuery code goes here 
    }); 

點擊一個按鈕,是一個更新面板內時工作的嘗試;它會轉到服務器並在它返回時重新添加jquery。但是,這不適用於由諸如eo:AJAXUploader之類的控件引起的異步回發,但將其與Bryans版本結合使用後,您也可以處理異步回發

3

看看來自Encosia的這個blog post,它給了你在異步更新之後重新綁定的幾種方法。我發現這解決了我的問題,這是類似的。

0

布賴恩得到了答案。我通常追加,與一些事件處理程序,剝皮和比如,火災與此回傳後:

/** 
    * .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