Cosa sto facendo meglio? .hide()
è più veloce della scrittura .css("display", "none")
, ma qual è la differenza e cosa stanno facendo entrambi con l'elemento HTML?
Cosa sto facendo meglio? .hide()
è più veloce della scrittura .css("display", "none")
, ma qual è la differenza e cosa stanno facendo entrambi con l'elemento HTML?
Risposte:
Dalla pagina jQuery su .hide () :
"Gli elementi corrispondenti verranno nascosti immediatamente, senza animazione. Ciò equivale all'incirca alla chiamata .css ('display', 'none'), tranne per il fatto che il valore della proprietà display viene salvato nella cache dei dati di jQuery in modo che la visualizzazione possa successivamente ripristinato al suo valore iniziale. Se un elemento ha un valore di visualizzazione inline, viene nascosto e mostrato, verrà nuovamente visualizzato in linea. "
Quindi, se è importante poter tornare al valore precedente di display
, è meglio utilizzarlo hide()
perché in questo modo viene ricordato lo stato precedente. A parte questo, non c'è differenza.
.hide()
memorizza la proprietà precedente display
poco prima di impostarla su none
, quindi se non fosse la display
proprietà standard per l'elemento che sei un po 'più sicuro, .show()
userà quella proprietà memorizzata come cosa tornare. Quindi ... fa qualche lavoro extra, ma a meno che tu non stia facendo tonnellate di elementi, la differenza di velocità dovrebbe essere trascurabile.
Guardando il codice jQuery, ecco cosa succede:
hide: function( speed, easing, callback ) {
if ( speed || speed === 0 ) {
return this.animate( genFx("hide", 3), speed, easing, callback);
} else {
for ( var i = 0, j = this.length; i < j; i++ ) {
var display = jQuery.css( this[i], "display" );
if ( display !== "none" ) {
jQuery.data( this[i], "olddisplay", display );
}
}
// Set the display of the elements in a second loop
// to avoid the constant reflow
for ( i = 0; i < j; i++ ) {
this[i].style.display = "none";
}
return this;
}
},
Sono la stessa cosa. .hide()
chiama una funzione jQuery e ti consente di aggiungere una funzione di richiamata. Quindi, con .hide()
te puoi aggiungere un'animazione per esempio.
.css("display","none")
cambia l'attributo dell'elemento in display:none
. È lo stesso che se eseguissi le seguenti operazioni in JavaScript:
document.getElementById('elementId').style.display = 'none';
La .hide()
funzione prende, ovviamente, più tempo per l'esecuzione come verifica la presenza di funzioni di callback, velocità, ecc ...
Usare entrambi è una bella risposta; non è una questione di o.
Il vantaggio di utilizzare entrambi è che il CSS nasconderà immediatamente l'elemento quando la pagina viene caricata. JQuery .hide farà lampeggiare l'elemento per un quarto di secondo, quindi lo nasconderà.
Nel caso in cui desideriamo che l'elemento non venga visualizzato quando la pagina viene caricata, possiamo usare CSS e impostare display: none e usare jQuery .hide (). Se prevediamo di attivare / disattivare l'elemento, possiamo usare l'interruttore jQuery.
Entrambi fanno lo stesso su tutti i browser, AFAIK. Controllato su Chrome e Firefox, sia di aggiunta display:none
al style
attributo dell'elemento.
Vedi non c'è differenza se usi il metodo hide di base. Ma jquery fornisce vari metodi hide che danno effetti all'elemento. Fare riferimento al collegamento seguente per una spiegazione dettagliata: Effetti per Nascondi in Jquery