2009-07-30 42 views
5

Tôi đã gắn các sự kiện jquery được đặt cho chuột con chuột mouseleave, cũng như jquery có thể kéo được. Các div được đặt trong một bảng cập nhật và khi một nút được bấm, thông tin được gửi đến cơ sở dữ liệu và bảng cập nhật được cập nhật. Tuy nhiên khi bảng điều khiển được cập nhật các sự kiện jquery không còn hoạt động. Bất kỳ ý tưởng nào về lý do tại sao điều này xảy ra?Bảng cập nhật ASP.NET ngừng hoạt động jquery từ khi đang hoạt động

Trả lời

7

Bạn có thể thêm trình kích hoạt Không đồng bộ vào trang của bạn để gọi JavaScript/Hàm jQuery sau bất kỳ cuộc gọi không đồng bộ nào.

Nơi mã này trong Page_Load của bạn() của mã aspx của bạn đằng sau:

//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); 

Đoạn mã này đặc biệt sẽ gọi hàm JavaScript/jQuery AsyncDone();

+0

Tôi đã thử điều này, nhưng chức năng "AsyncDone()" của tôi không được gọi. – ErnieStings

+0

Bạn đã thử đặt cảnh báo để xem liệu nó có đang được gọi không? Bạn sẽ phải kết nối lại các sự kiện jquery sau mỗi lần tải trang không đồng bộ bên trong hàm AsyncDone(). –

1

Sử dụng live.

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

từ các tài liệu jquery cho "sống": Hiện nay không được hỗ trợ: làm mờ, lấy nét, mouseenter, MouseLeave, thay đổi , gửi –

+0

Đối với những người mới tìm thấy câu hỏi này, điều này không còn là trường hợp, jQuery 1.4 và các phiên bản mới hơn hỗ trợ tất cả các sự kiện bong bóng đó. https://api.jquery.com/live/ – nyuszika7h

3

thử sử dụng

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

thay vì

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

này sẽ làm việc khi một nút đó nằm trong một bảng cập nhật được nhấp; nó đi đến máy chủ và sẽ thêm lại jquery khi nó trở lại. Tuy nhiên, điều này không hoạt động với postbacks không đồng bộ gây ra bởi một điều khiển như eo: AJAXUploader nhưng kết hợp với phiên bản Bryans này bạn có thể xử lý postback không đồng bộ cũng như

3

Có giao diện blog post từ Encosia cung cấp cho bạn một số cách để khôi phục sau khi cập nhật không đồng bộ. Tôi thấy điều này giải quyết được vấn đề của tôi tương tự.

0

Bryan có câu trả lời. Tôi thường thêm rằng với một số xử lý sự kiện, cho skinning và như vậy, ngọn lửa sau khi PostBacks với điều này:

/** 
    * .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 
Các vấn đề liên quan