2016-01-18 15 views
9

Używam http://datatables.net/DataTables jQuery kliknij zdarzenie nie działa po paginacji

<button class='btn btn-success activeAccount'>Activate Account</button> 

I wywołać ajax połączenie onclick razie poniżej ajax kod wywoławczy:

$(".activeAccount").click(function() { 
    var intCounselorId = $(this).parent().parent().find('input[class="counselorId"]').attr("value"); 
    var intOwnerId = $(this).parent().parent().find('input[class="userID"]').attr("value"); 
    var strAction = 'activateAccount'; 
    performAction(intCounselorId, intOwnerId, strAction); 
}); 

function performAction(intCounselorId, intOwnerId, strAction) { 
    $.ajax({ 
     url: '/admin/counselormanagement/expertmanagementgridaction', 
     data: 'intCounselorId='+intCounselorId+'&intOwnerId='+intOwnerId+'&strAction='+strAction, 
     type: "POST", 
     async:false, 
     success: function(intFlag) { 
     if(intFlag == 1){ 
      location.reload(); 
     } 
     } 
    }); 
} 

Próbuję uruchomić Zdarzenie onclick, które działa normalnie na pierwszej stronie, ale jak tylko przejdę na stronę 2 (lub jakikolwiek inny), przestaje działać.

używam jQuery 1.10.2.min.js i 1.9.4 wersję elementu datatable

+2

Czy w treści tabeli znajduje się przycisk '.activeAccount'? Zwróć też uwagę, że używanie "async: false" jest naprawdę złą praktyką, a funkcja 'location.reload()' w procedurze obsługi sukcesu całkowicie neguje cały punkt tworzenia żądania AJAX. –

+0

tak, jest pod treścią tabeli –

+0

W takim przypadku należy użyć delegowanego programu obsługi zdarzeń, zgodnie z odpowiedzią @ squaleLis. Naprawdę powinieneś pozbyć się 'async: false' i' location.reload() '. –

Odpowiedz

25

Ponieważ zdarzenie jest przymocowany tylko do istniejących elementów.

należy go zmienić na:

$("#tableId").on("click", ".activeAccount", function(){ 
    // your code goes here 
}); 

Czytaj więcej w dokumentacji jQuery.on.

+1

Co za miła odpowiedź ... –

+0

@ sarower-jahan Dziękuję :) – squaleLis

Powiązane problemy