Wie kann ich überprüfen, dass zwei jQuery-Objekte über gleichwertige Funktionen verfügen, dh dieselben Tag-Namen, Attribute, Werte und Textinhalte?jQuery-Objektäquivalenztest (tiefer Vergleich des Inhalts, nicht Identität)
Diese Frage ist nicht ein Duplikat (Inhalt weise oder Identität weise) von einem dieser:
- comparing jQuery objects
- How would you compare jQuery objects?
- How to check for DOM equality with jQuery?
- jQuery object equality
- How do I compare two jQuery objects for identity?
Die meisten davon gelten für ausgewählte nicht synthetisierte Elemente und werden wie folgt beantwortet: Vergleichen Sie DOM-Objekte mit [0] oder .get (0); oder nach jQuery 1.6 benutze .is(). Übrigens, was ist mit der ganzen Duplikation? Jedenfalls funktionieren diese Methoden nicht für diesen Zweck. Beispiel:
var xx = $('<a>', {href: '#'}).append($('<b>').text('foo'));
var yy = $('<a>', {href: '#'}).append($('<b>').text('foo'));
var zz = $('<a>', {href: '#'}).append($('<b>').text('foobar'));
ich eine Funktion wollen, nennen Sie es same_contents(), das würde so funktionieren:
> same_contents(xx, yy)
true
> same_contents(xx, zz)
false
Aber keiner der einfachen oder klassische Weise tun dies, weil sie letztlich Identität zu vergleichen nicht Inhalt:
> xx == yy
false
> xx == zz
false
> xx[0] == yy[0]
false
> xx[0] == zz[0]
false
> xx.is(yy)
false
> xx.is(zz)
false
für diesen Vergleich Mein Ziel, dass ein komplexer Objektbaum genau über Brute-Force mit zwei verschiedenen Methoden neu synthetisiert wurde zu prüfen ist, im Vergleich zu über weniger repetitiven Funktionsaufrufe.
Ich frage mich, ob innerHTML wäre besser, da die Methode same_contents ist, die möglicherweise den Wunsch, nur den Inhalt zu vergleichen, anstatt auch die obersten Eltern auch vergleichen. – Taplar