2017-07-26 2 views
1

J'essaie de comprendre pourquoi les lignes sont dupliquées une fois enlevées seulement quand la fonction de tablesorter est utilisée. Voici la page en question:Rangée de table de clonage de bogues de tablesorter avec jquery

http://www.ffxiv-gathering.com/40.php

Pour dupliquer le bug procédez comme suit:

  1. Cliquez sur une ligne sur l'onglet Intacte
  2. Aller à l'onglet Regarder
  3. Cliquez sur le ligne pour l'enlever
  4. Allez dans l'onglet Vierge et cliquez sur une ligne ... puis cliquez sur une autre
  5. Accédez à l'onglet Suivi

Vous pouvez voir que la première ligne initialement cliquée a été dupliquée. Je ne peux pas pour la vie de moi comprendre pourquoi. Retrait de la fonction de tablesorter résout le problème ... cependant, je voudrais que cela reste car il trie la table par statut (et donc déplace les nœuds actuels et à venir vers le haut).

Voici le jquery, la commande:

$(document).ready(function() { 
var items = []; 

$("#myTable-unspoiled >tbody >tr").on("click", function() { 
    var newTr = $(this).closest("tr").clone().addClass("remove"); 

    items.push(newTr); 
    newTr.appendTo($("#myTable-watching")); 

    $(".remove").click(function(){ 
    $(this).closest('tr').remove(); 

    var rowCount = $('#myTable-watching >tbody >tr').length; 
    $('#counter').html(rowCount); 
    }); 

    var rowCount = $('#myTable-watching >tbody >tr').length; 
    $('#counter').html(rowCount); 

    $("#myTable-watching").tablesorter({ 
    // sort status column, then item; ascending 
    sortList: [[6,0],[0,0]] 
    }); 
}); 
}); 

La suppression de ce résout le problème, mais me empêche de tri:

$("#myTable-watching").tablesorter({ 
    // sort status column, then item; ascending 
    sortList: [[6,0],[0,0]] 
}); 

Voici une page sans le plugin tablesorter.

http://www.ffxiv-gathering.com/40-test.php

Pour voir mon problème ... Cliquez sur une ligne de couleur, puis une ligne blanche, puis une autre ligne de couleur et afficher l'onglet Regarder.

+0

Avez-vous essayé '$ ("# myTable-watching"). tablesorter ({...}); 'hors du gestionnaire' click'? –

Répondre

0

Lorsque vous ajoutez et/ou supprimer des lignes de la table, assurez-vous de déclencher une "mise à jour" au lieu de réinitialisant tablesorter ...

newTr.appendTo($("#myTable-watching")); 
$("#myTable-watching").trigger("update"); 

et

$(".remove").click(function(){ 
    var $table = $(this).closest('table'); 
    $(this).closest('tr').remove(); 
    $table.trigger('update'); 
    // ... 
}); 
+0

Cela a fonctionné à merveille! Si je veux ajouter des lignes à partir d'une autre table, dois-je créer une autre fonction avec l'autre ID de table ou existe-t-il un moyen d'appeler plus d'un ID de table avec une fonction de clic? – Jay

+0

J'ai répondu à ma propre question. Merci encore pour votre aide. – Jay