2011-01-29 148 views
2

我在我的頁面上加載了一個jqGrid。網格爲每一行都有一個刪除按鈕。我想在我的刪除按鈕上使用jQuery UI對話框確認。jqGrid和jquery點擊事件的問題

這裏是我的javascript代碼:

<script type="text/javascript"> 

    $(document).ready(function() { 

     $("#list").jqGrid({ 
      url: '/MyController/MyFunction/', 
      datatype: 'json', 
      mtype: 'POST', 
      colNames: ['', 'Name', ''], 
      colModel: [ 
       { name: 'Edit', index: 'Edit', width: 40, align: 'left', sortable: false }, 
       { name: 'Name', index: 'Name', width: 120, align: 'left' }, 
       { name: 'Delete', index: 'Delete', width: 50, align: 'left', sortable: false }], 
      pager: $('#pager'), 
      rowNum: 10, 
      rowList: [10, 20, 50], 
      sortname: 'Name', 
      sortorder: "asc", 
      viewrecords: true, 
      width: 700 
     }); 


     $("#dialog-confirm").dialog({ 
      autoOpen: false, 
      modal: true, 
      buttons: { 
       "Delete": function() { 
        window.location.href = $(this).attr("href"); ; 
       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 


     $("a.confirm").click(function() { 
      alert("HELLO"); 
      //$("#dialog-confirm").dialog("open"); 
     }); 

    }); 

</script> 

我在數據傳遞從我的控制器到電網。我已將「確認」類添加到每行的刪除鏈接中。

如果我點擊我的刪除按鈕,沒有任何反應。該鏈接有正確的類,並且我的所有javascript都正確加載。我在document.ready函數的最後放置了一個alert,以確保沒有錯誤。

但是,如果我註釋掉我的jqGrid並添加一個鏈接到我的頁面上的類「確認」,點擊事件將觸發。

有沒有人遇到過這個問題?

回答

7

您所遇到的主要問題是您嘗試在加載元素「a.confirm」之前,先使用$("a.confirm").click(...)進行「點擊」綁定,然後再加入

您應該將綁定代碼loadCompletegridComplete事件處理程序的內部或使用jQuery.live

$("a.confirm").live('click', function() { 
    alert("HELLO"); 
    //$("#dialog-confirm").dialog("open"); 
}); 

,而不是$("a.confirm").click(...)

更多一般性評論。使用jqGrid的最佳實踐是將數據從HTML標記中分離出來。我想你把HTML片段與<a class="confirm">...</a>放在從服務器返回的JSON數據中。 jqGrid支持另一種方法來歸檔相同的結果。您可以1)使用showlink格式化程序; 2)使用custom formatter,它允許根據從服務器返回的數據行(參見rowObject參數)爲網格單元創建任何HTML片段3)使用不顯眼的JavaScript(參見my answerthe code example)4)兩者的任何混合(參見another answer和代碼示例)。 3的方式似乎與我所做的大部分很接近。

以任何方式將JSON數據與HTML標記清楚分開不僅僅是因爲設計原因。它允許額外減少從服務器發送的數據的大小。 (詳情請見this answer

+0

謝謝,幫了很多! – ymakux 2013-03-10 21:09:25