2015-05-20 38 views
0

我討厭問一個已經被問了一個問題,但沒有我看問題的答案似乎適用於我的問題asp.NET AJAX調用,jQuery的不再起作用

我使用的是微軟UpdatePanel對象用AJAX更新gridview。如果我在文檔加載時加載gridview,我的jQuery效果很好。我第一次使用AJAX進行更新時,jQuery不再工作。

從看網頁博客,我得到gridview對象是不一樣的頁面加載時存在,我需要重新熟悉我的jQuery與新的DOM對象(我認爲...正確的...?)。我查看過的大多數網站(包括本站上的帖子)都表明,.on()jQuery函數可以幫助我,但我無法弄清楚如何使用它來解決我的問題。

這裏是我的jQuery函數中的一個例子,如果你不在意:

// Select/deselect all checkboxes on gridview 
    $("#chkSelectAll").change(function() { 
     var isChecked = $('#chkSelectAll:checked').val() ? true : false; 
     if (isChecked == true) { 
      $(".c_chkItem input").each(function() { 
       $(this).prop('checked', true) 
      }); 
     } else {  
      $(".c_chkItem input").each(function() { 
       $(this).prop('checked', false) 
      }); 
     } 
    }); 

我的問題是,當dot.net對象更新我的GridView,如何才能讓我的jQuery的認識呢?

+0

你能發佈整個ajax函數嗎? – Jacky

回答

0

在StackOverflow的好人不能幫助我,所以我把我的頭髮再抽出幾個小時。這是我的解決方案,以防萬一有同樣問題的人遇到此頁面。

如果你有以下的jQuery代碼:

<script type="text/javascript"> 

    $(document).ready(function() { 
     $('#myControl').val('some value'); 
    } 

</script> 

它會工作時,第一次加載頁面,但如果myControl位於該被阿賈克斯更新一個UpdatePanel對象,你的jQuery的功能將不再一次使用它。

爲了解決這個問題,移動的jQuery到的document.ready功能之外的單獨功能,並使用下面的代碼:

<script type="text/javascript"> 

    $(document).ready(function() { 
     // Whatever 
    } 

    function pageLoad(sender, args) { 
     if (args.get_isPartialLoad()) { 
      $('#myControl').val('some value'); 
     } 
    } 

</script> 

現在myControl將您的jQuery的每一個你的頁面重新加載部分響應時間由阿賈克斯。

還有一件事,如果您有一個webform控件需要在第一次ajax調用之前看到jQuery,那麼您可能還需要將jQuery語句放在document.ready函數中,以便在頁面第一次加載,並在每個Ajax調用後再次加載。我不需要這樣做,我也沒有測試過,但我猜測這是正確的。