2009-03-13 7 views
0

Je viens d'installer dans ASP.NET MVC RC2 et avec cela aussi en utilisant la bibliothèque JQuery 1.3.1.
Avant d'utiliser la bibliothèque 1.2.6.
Notre application fonctionne correctement sous cette bibliothèque.
Mais maintenant j'ai un problème étrange.
Nous avons une vue de grille que nous construisons avec le résultat d'un appel AJAX.
Avec le résultat renvoyé, nous ajoutons de nouvelles lignes à une table en clonant une ligne cachée.
JQuery 1.3.1 ne trouve pas de lignes générées dynamiquement

Le code HTML généré par JQuery place des paramètres supplémentaires dans les balises. Ce sont sous la forme de JQuery12345678 = "null". Ils ont tous le même nom. Dans la tête de la table, il y a une case à cocher qui sélectionne/désélectionne toutes les lignes de la table. Ceci en itérant à travers les lignes de la table.

$("#selectAllCheckbox").click(function() { 
    var checked = this.checked; 
    $("#dgNewTasks tbody tr").find(':input[type="checkbox"]').each(function() { 
     this.checked = checked; 
    }); 
}); 

Maintenant, en utilisant la nouvelle bibliothèque, les cases à cocher ne sont plus définies. J'ai utilisé IE Developer Tools pour vérifier le code HTML. Si je supprime le paramètre JQuery12345678 = "null" de mes lignes. Ça fonctionne bien.

Quelqu'un pourrait-il me dire ce que je dois faire?

+0

Pouvez-vous s'il vous plaît donner un exemple de l'extrait de code html pertinent? Mozilla Firefox fournit une console d'erreur JavaScript, veuillez regarder s'il y a des erreurs/exceptions en tirant l'événement. – Mork0075

Répondre

1

Nous devons voir votre code HTML. Cela pourrait éclairer le problème. En attendant, votre code peut être grandement simplifié:

$("#selectAllCheckbox").click(function() { 
    var checked = this.checked; 
    $("#dgNewTasks tbody tr :checkbox").attr("checked", checked); 
}); 
0

cela ne fonctionne pas parce que vous attachez le gestionnaire d'événements (par exemple click()) dans le gestionnaire d'événements ready() et à ce moment il n'y a pas toutes les lignes créées dynamiquement. Par conséquent, attachez le click() ou tout autre gestionnaire d'événements aux lignes créées dynamiquement après leur création.

0

Il semble que vous devez utiliser le .live au lieu de .cliquez:

$("#selectAllCheckbox").live(function() { 
    var checked = this.checked; 
    $("#dgNewTasks tbody tr").find(':input[type="checkbox"]').each(function() { 
     this.checked = checked; 
    }); 
}); 
Questions connexes