2009-09-09 15 views
1

J'avais une exigence où je dois décocher la case "Sélectionner tout" au cas où l'utilisateur désélectionnerait manuellement l'une des lignes de données. Cela a été accompli en détectant cela au cours d'un événement onRowSelect (événement jqgrid). L'extrait de code est comme ci-dessous et fonctionne comme prévu.Dois-je vérifier si l'attribut 'disabled' existe avant de le supprimer?

onSelectRow: function(){$("input:checkbox[id='cb_jqg']").removeAttr('checked');} 

La chose que je me pose est de savoir si je devrais vérifier la case déjà sélectionnée avant d'effacer le tout ou je peux simplement l'effacer (comme il n'a pas eu d'impact) comme ci-dessus.

Existe-t-il des problèmes d'éthique de performance/code avec la syntaxe que j'ai utilisée?

Répondre

3

L'ajout d'une vérification avant de définir la valeur sera plus lent que de simplement les régler arbitrairement simplement parce qu'elle doit effectuer la vérification.

D'un point de vue éthique, ça ne va pas jeter une erreur, donc tout est juste dans l'amour et le codage, non?

+0

Merci pour votre réponse. Cela correspond à mon raisonnement pendant que je rédigeais le code. Plus tard, je me rends compte que l'état "Sélectionner tout" n'est pas si fréquent, il vaudra donc mieux vérifier si sa vérification (et le plus souvent elle n'est pas vérifiée) ne fait rien. Vous avez des commentaires à ce sujet? – Nrj

0

Cela ressemble à vous avez plusieurs cases à cocher avec le même id. Ceci est invalide en HTML. Vous pouvez à la place utiliser la même name pour ces cases à cocher.

De plus, la façon plus standard de réglage de la checkedness d'une case à cocher est simplement établir la propriété checked de l'élément de case à cocher true ou false, plutôt que de compter sur les méthodes de gestion des attributs de jQuery.

Questions connexes