2012-12-21 3 views
0

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.

+0

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

+0

@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. :( –

+1

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

Répondre

1

Ce n'est pas une solution idéale, mais je me suis autour en comparant

equal(actual.html(), expected.html()); 

où sont des blocs effectifs et attendus des éléments.

Questions connexes