2010-11-16 10 views
0

J'ai un tableau HTML dans lequel les cellules de la première colonne contiennent chacune une case à cocher avec une classe 'myClass'. J'ai également mis une case à cocher dans la cellule d'en-tête de cette colonne, et je veux qu'elle fonctionne de sorte que cocher ou décocher la cellule d'en-tête place ou désactive toutes les cases à cocher des lignes. J'ai ce code dans le gestionnaire de clic de la case à cocher de l'en-tête:jQuery ne trouve pas les éléments désactivés de manière cohérente dans Opera

if (jQuery(event.target).attr('checked') === true) { 
    alert(jQuery('td .myClass:enabled').length); 
    jQuery('td .myClass:enabled').attr('checked', 'checked'); 
} else { 
    alert(jQuery('td .myClass:enabled').length); 
    jQuery('td .myClass:enabled').removeAttr('checked'); 
} 

Trois lignes ont activé les cases à cocher et cinq désactivées.

Le code fonctionne correctement dans IE8, FF3.6 et Chrome 7.0. Cependant, dans Opera 10.63, la première fois que je vérifie la cellule d'en-tête, toutes les huit lignes sont vérifiées. Par la suite le code fonctionne comme prévu. Les instructions d'alerte confirment cela, en montrant '3' à chaque fois sauf le premier.

Est-ce un bug d'Opera? Si oui, y a-t-il une solution?

+0

page d'exemple dont nous avons besoin http://www.jsbin.com – galambalazs

Répondre

2

étrange synchronisity - Je viens d'analyser un rapport de bug je pense est le même problème quelques heures il y a :)

Oui, cela est probablement un bug où Opera n'appliquer la pseudo-classe correctement activé sur les éléments créés dans le DOM et insérés ultérieurement dans le document.

Il peut être une solution de contournement acceptable pour utiliser les noms de classe au lieu de: enabled. Ou inverser la propriété .checked deux fois sur toutes les cases de onload, peut-être? Il semble que basculer le statut désactivé ou vérifié va rendre Opera très bien gérer.

+0

Merci. J'ai suivi votre conseil et l'ai "corrigé" en cochant et en décochant toutes les cases à cocher la première fois que l'utilisateur clique dans la boîte d'en-tête. Après cela, Opera n'a aucun problème à toutes les cases à cocher activées. –

+1

Excellent. Nous aurons un correctif de base préparé - cela arrivera dans un certain temps après Opera 11, probablement - mais la solution de contournement ne devrait pas non plus avoir de mauvais effets secondaires. – hallvors