2013-04-20 11 views
8

Używam jquery Tabela danych 1.9.4 i jquery 1.9.1 i próbuję wykonać wywołanie ajax w ten sposób w zdarzeniu kliknięcia.Tabela danych jquery nie działa z drugiej strony

$(".icon-trash").on('click',function() { 
       // alert($(this).attr('id')); 
       $.post('/WorkOrderRequest/DeleteWOR', 
         { id: $(this).attr('id') }, 

         function (returndata) 
         { 

          if (returndata.ok) 
          { 
           window.alert(' deleted!'); 
           $("#emp" + idemployee).hide('slow'); 
          } 
          else { 
           window.alert(' error : ' + returndata.message); 
          } 

        }); 

      }); 

html część:

@foreach (var item in Model) 
        { 

         <tr> 
          <td> 
           @Html.DisplayFor(modelItem => item.ProjectCode) 
          </td> 
          <td> 
           @Html.DisplayFor(modelItem => item.WO_Date) 
          </td> 


          <td> 
          <a id='@(item.WO_ID)' class="icon-edit" /> 
           |        
          <a id='@(item.WO_ID)' class="icon-trash" /> 
          </td> 
         </tr> 
        } 

To działa dobrze na pierwszej stronie, ale z drugiej strony jej nie widać żadnych rezultatów. Pomóż

+0

co oznacza "druga strona"? Używasz stronicowania w tabeli? – charlietfl

+0

Tak, używam stronicowania w moim datatable –

Odpowiedz

22

Sposób działania paginacji, wiersze niepotrzebne przez bieżącą stronę zostaną usunięte z DOM. W związku z tym wszelkie programy obsługi zdarzeń, które można powiązać bezpośrednio z tymi elementami, zostaną utracone po usunięciu html.

Należy użyć składni delegacji on(), aby związać obsługę do zasobu na stronie, która jest stała. To może być tabela rodzic lub inny rodzic się drzewa, w tym document

$('#TableID').on('click','.icon-trash',function() {... 

API Reference: http://api.jquery.com/on/

+1

WoooooW !! Teraz działa dobrze. Dziękuje bardzo. jesteś g8. –

+0

Świetna pomoc !!!! dzięki – user1882705

+0

To jest najlepsza odpowiedź na ten problem. – Marcel

5

Jeśli wystarczy umieścić kliknij kod zdarzenia powyżej kodu datatable w js, to działa dobrze.

Jako przykład.

$(".icon-trash").on('click',function() {}); 

$("#TableID").datatable(); 
+0

Dobra odpowiedź! Kolejność rzeczywiście ma znaczenie, dzięki tona –

+0

To nie działa, gdy zmieniasz kolejność. –

1

mam ten sam problem i rozwiązać go, przesuwając w dół poniżej kod linii w ostatniej

$('#yourTable').dataTable();

nadzieję, że komuś pomóc.