Je veux comparer deux blocs d'éléments et voir qu'ils sont identiques. Les éléments que je veux comparer ont des entrées cachées, et je frappe cette erreur, qui je pense a à voir avec les entrées cachées:QUnit - comparaison des entrées cachées - TypeError: selectionDirection sur l'entrée
TypeError: Accès selectionDirection sur un élément d'entrée qui ne peut pas avoir une sélection.
Voici une version simplifiée de mon code (et aussi ce qui est en jsFiddle):
test("compare input", function() {
var input1 = $('<input/>').attr("value", 'cool_play');
var input2 = $('<input/>').attr("value", 'cool_play');
deepEqual(input1, input2);
});
test("compare hidden input", function() {
var input1 = $('<input/>').attr("type", "hidden").attr("value", 'cool_play');
var input2 = $('<input/>').attr("type", "hidden").attr("value", 'cool_play');
deepEqual(input1, input2);
});
exemple passe d'abord, mais le second exemple renvoie une erreur.
Voilà exemple jsFiddle: http://jsfiddle.net/HLG5y/1/
Est-il possible de comparer des éléments d'entrée avec classe cachée? Est-ce que j'essaie cela d'une mauvaise façon? Je vous remercie. Je pense que je devrais être capable de comparer les entrées cachées, aussi.
Il semble que 'deepEqual' compare chaque propriété des objets, ce qui génère une erreur pour cette propriété DOM spécifique sur les entrées masquées. Vous pourriez peut-être définir plus précisément lorsque deux entrées sont égales (par exemple, vérifier manuellement uniquement le type et la classe). – pimvdb
@pimvdb - Je voudrais, mais ce que je compare est en fait un bloc d'éléments imbriqués, et l'élément d'entrée est tout le chemin au centre de celui-ci. S'il n'y a pas moyen de contourner cela, je suppose que je devrai en comparer des morceaux un par un. :( –
Ce que je veux dire, c'est qu'il est sujet aux erreurs - par exemple, si vous ajoutez les éléments de cas # 1 au DOM au même parent, leur 'nextSibling' devient différent et ils ne seraient plus soudainement égaux. – pimvdb