2010-10-05 4 views
0

Bonjour J'ai une table (avec le nom de classe ".data") avec son thead tenant une seule case à cocher pour sélectionner/désélectionner toutes les cases à cocher dans mon tbody.Jquery méthode de changement et l'ajout de classes en vrac

Chaque case à cocher dans le tbody peut également être sélectionnée individuellement et une fois qu'une case est cochée, elle ajoute une nouvelle classe à la ligne sélectionnée (pour mettre en arrière-plan une autre couleur à mettre en surbrillance).

Maintenant, pour cela, je vous ai écrit ces méthodes:

function enableBulkCheckbox(){ 
    $(".checkall").change(function(){ 
     if ($(this).is(':checked')){ 
      $(".data input:checkbox").attr('checked', true); 
     } 
     else{ 
      $(".data input:checkbox").attr('checked', false); 
     } 
    }); 
} 

function selectMark(box){ 
    if ($(box).is(':checked')){ 
     $(box).parent().parent().addClass("selected"); 
    } 
    else{ 
     $(box).parent().parent().removeClass("selected"); 
    } 
}; 

function applySelectMark(){ 
    $(".data tbody input:checkbox").change(function(){ 
     selectMark(this); 
     alert("hooo"); 
    }); 
}; 

et j'init enableBulkCheckbox() et

Il semble que $(".data tbody input:checkbox").change ne peut pas reconnaître si enableBulkCheckbox() est déclenchée. Cependant, sélectionner/désélectionner tout via la case à cocher de sélection de masse fonctionne comme expancé. Comment cela peut-il être résolu de sorte qu'une fois que je clique sur la case à cocher bulk, toutes les lignes peuvent obtenir la classe "selected".

Répondre

1

Je pense que le problème est que la modification de l'attribut "checked" ne déclenche pas l'événement change. Essayez d'appeler la fonction selectMark dans la fonction enableBulkCheckbox:

+0

Merci! Juste pour la référence future, chks.each nécessite un ")" après "}". – Hellnar

+0

Ouais désolé je le corrige – mck89