Ho provato $(document) === $(document)
ma ho trovato il risultato è false
..
Qualcuno ha idee su questo?
Ho provato $(document) === $(document)
ma ho trovato il risultato è false
..
Qualcuno ha idee su questo?
Quando si utilizza jQuery si ottiene un oggetto JS. Questo oggetto è totalmente diverso ogni volta che usi il selettore jQuery.
Per capire meglio, ho giocato in console con alcuni array:
a = [1, 2]
[1,2]
b = [1, 2]
[1,2]
a == b
false
a === b
false
Quando si utilizza jQuery è proprio come l'utilizzo di oggetti, perché non si ottiene un elemento DOM in risposta (forse che perché ti sei confuso)
Come puoi farlo?
Se si vuole confrontare 2 jQuery oggetti è possibile utilizzare il metodo is() jQuery:
$(document).is($(document))
true
Perché in cima jQuery, ogni chiamata ($()
o jQuery()
) ad esso restituisce nuova istanza:
return new jQuery.fn.init(selector, context);
Quindi tutte le istanze di jQuery (anche per stessi selettori) sono sempre diversi (ad esempio $("#id") === $("#id")//false
)
È possibile controllare il codice sorgente (Linea 78) di jQuery 2.1.0
Ma se lo metti alla variabile, è possibile ottenere una parità:
var d, d_copy;
d = $(document);
d_copy = d;
d_copy === d; //true
È possibile controllare l'uguaglianza di due oggetti che utilizzano is() come
alert($(document).is($(document))); // return true
Ogni volta che si seleziona l'elemento document
utilizzando jQuery, si è data una nuova selezione di tale elemento incapsulato in un oggetto jQuery.
Pertanto, la prima chiamata a $(document)
seleziona l'elemento document
nel DOM e fornisce una nuova istanza di un oggetto jQuery che contiene tale selezione. La seconda selezione ti offre un'altra istanza di un oggetto jQuery che incapsula lo stesso elemento document
. Sebbene questi oggetti jQuery abbiano effettivamente membri di dati identici, sono due oggetti distinti che incapsulano l'elemento DOM document
.
la stessa ragione '{} === {}' restituisce false, non ci saranno mai due oggetti uguali tra loro a meno che non siano esattamente lo stesso oggetto, cioè 'a = b = {}; a === b' –
Spiegare il motivo della riapertura. –