datatables jquery click event funktioniert nach Paginierung nicht

Lesezeit: 3 Minuten

Benutzer-Avatar
aja p

ich benutze http://datatables.net/

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

Ich löse einen Ajax-Aufruf bei einem Onclick-Ereignis aus, unten ist der Ajax-Anrufcode:

$(".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();
        }
      }
  });
}

Ich versuche, ein Onclick-Ereignis auszuführen, das auf Seite eins normal funktioniert, aber sobald ich auf Seite 2 (oder eine andere) gehe, funktioniert es nicht mehr.

Ich verwende jquery-1.10.2.min.js und die Version 1.9.4 von Datatable

  • Ist der .activeAccount Schaltfläche innerhalb des Inhalts der Tabelle? Beachten Sie auch, dass es wirklich schlechte Praxis ist, es zu verwenden async: falseund die location.reload() im Erfolgshandler negiert den gesamten Punkt, überhaupt eine AJAX-Anfrage zu stellen.

    – Rory McCrossan

    18. Januar 2016 um 15:52 Uhr


  • Ja, es ist unter Inhalt der Tabelle

    – aja p

    18. Januar 2016 um 15:59 Uhr

  • In diesem Fall müssen Sie gemäß der Antwort von @squaleLis einen delegierten Ereignishandler verwenden. Sie sollten wirklich loswerden async: false und die location.reload() obwohl.

    – Rory McCrossan

    18. Januar 2016 um 15:59 Uhr

  • Ich habe hier eine Antwort gegeben. stackoverflow.com/questions/25575996/… Sie können dies sehen.

    – Md. Harun oder Rashid

    5. Februar 2017 um 8:02 Uhr

  • Die von @Md.HarunOrRashid vorgeschlagene Lösung ist wirklich hilfreich

    – Ogbonna Vitalis

    12. März 2020 um 8:46 Uhr

Benutzer-Avatar
squaleLis

Denn das Event wird nur an bestehende Elemente angehängt.

Sie sollten es ändern in:

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

Lesen Sie mehr in der Dokumentation von jQuery.on.

  • @sarower-jahan Danke 🙂

    – squaleLis

    24. April 2016 um 8:41 Uhr

  • Danke, seine wirklich hilfreiche Antwort.

    – Varinder Singh Baidwan

    4. August 2018 um 11:38 Uhr

  • In meinem Fall war vor dem Click-Event “$(“.each_player”).click(function(){ // my code goes here });” Nach dem Ändern “$(“#playerGroupUI”).on(“click”, “.each_player”, function(){ // my code goes here });”

    – sh6210

    20. Mai 2019 um 8:47 Uhr


  • Dadurch wurde das Ereignis mehrmals statt einmal ausgelöst!? 10 Löschsymbole auf der Seite und beim Klicken auf eines wurde die Löschbestätigung zweimal ausgelöst

    – einige_lebensmittel

    29. Juni 2019 um 12:41 Uhr

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

Ich hatte das gleiche Problem. Jedes Mal, wenn meine AJAX-Funktion (modalContentAjaxRefresh) die Tabelle aktualisiert, stoppt das Paging. SO musste ich nur meinen Code ändern von:

Aus :

$(‘.modal-toggle’).off(‘click’, modalContentAjaxRefresh).on(‘click’, modalContentAjaxRefresh);

zu:

$(‘#DataTables_Table_0_wrapper’).on(“click”, “.modal-toggle”, modalContentAjaxRefresh);

Meine Schaltfläche in der Datentabelle ist:

< a title="Bearbeiten" class="btn btn-xs btn-info modal-toggle
data-style=”zoom-in” href=”https://stackoverflow.com/setting/account/{{account_turn.uuid}}/update” data-toggle=”modal” data-target=”#editAccount” wecare -method=”GET”>

Wie @squaleLis sagte, ist das Ereignis nur an vorhandene Elemente angehängt.

In meinem Fall habe ich also das onclick-Ereignis für die Schaltfläche definiert und aufgerufen.

  <button class="btn btn-success activeAccount" onclick="YourMethod();">Activate Account</button>

  function YourMethod() {
     ....same code..
  }

$("#product-list").on("click",".btn-delete-product",function(e){
    e.preventDefault();
    var prodId     =   $(this).attr("product-id"); 
    .... code to delete the record from the db...
  });

Produktliste ist die Tabelle, in die Daten geladen werden und Paging aktiviert ist.

Das funktioniert perfekt für mich.

Benutzer-Avatar
Harshil Modi

Ich denke, eine gute und einfache Lösung ist die Verwendung drawCallback Möglichkeit

Benutzer-Avatar
ferpalma21.eth

Wichtig ist vor allem die Neuzuordnung der Elemente beim Klick auf die Paginierung.

//function to assign event
var assign_actions = function(){
  //Some code  
}
  //when the page is ready
  $( document ).ready(function() {
    assign_actions();
    //Code to assign event when paginate
     $('.paginate_button').on('click', function(){
       assign_actions();
     });
   });

1205430cookie-checkdatatables jquery click event funktioniert nach Paginierung nicht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy