Manipolazione DOM e Animazioni
Logic bug: .attr('checked') returns initial HTML string value instead of current boolean state (use .prop('checked')) – jQuery PROP_VS_ATTR_CONFUSION
Dalla versione 1.6 in poi, '.attr()' legge l'attributo statico dell'HTML iniziale, mentre '.prop()' legge e imposta lo stato booleano dinamico corrente della proprietà del DOM; verificare sempre lo stato di checkbox e radio con '.prop("checked")'.
Cosa significa questo errore?
Dalla versione 1.6 in poi, '.attr()' legge l'attributo statico dell'HTML iniziale, mentre '.prop()' legge e imposta lo stato booleano dinamico corrente della proprietà del DOM; verificare sempre lo stato di checkbox e radio con '.prop("checked")'.
Messaggio originale
Logic bug: .attr('checked') returns initial HTML string value instead of current boolean state (use .prop('checked'))Contesto e parole chiave
Alias
- .attr('checked') vs .prop('checked') jQuery
Messaggi alternativi
- differenza attr e prop per attributi booleani checked disabled
Prodotti
- jQuery Library (v1.x, v2.x, v3.x, v4.x)
Piattaforme
- Linux
- macOS
- Qualsiasi Browser Web
- Windows
Parole chiave
- ajax
- errore-jquery-prop-vs-attr-boolean-confusion
- javascript
- jquery
- jquery.dom.prop-vs-attr-checked-disabled-boolean-state
- Manipolazione DOM e Animazioni
Cause possibili
Causa tecnica per Errore jQuery: Uso di .attr() anziché .prop() per Proprietà Booleane (checked, disabled)
Dalla versione 1.6 in poi, '.attr()' legge l'attributo statico dell'HTML iniziale, mentre '.prop()' legge e imposta lo stato booleano dinamico corrente della proprietà del DOM; verificare sempre lo stato di checkbox e radio con '.prop("checked")'.
molto comuneDiagnosi
Diagnostica DOM o AJAX per Errore jQuery: Uso di .attr() anziché .prop() per Proprietà Booleane (checked, disabled)
Verificare lo stato della variabile window.jQuery nella Console DevTools (F12) e ispezionare il tab Network per le chiamate AJAX.
Come leggere il risultato. Restituisce la versione attiva di jQuery e il numero effettivo di nodi DOM corrispondenti al selettore.
console.log(jQuery.fn.jquery); console.log($('.my-element').length);Risoluzione
Risoluzione standard per Errore jQuery: Uso di .attr() anziché .prop() per Proprietà Booleane (checked, disabled)
Applicare la correzione al codice o alla configurazione degli script jQuery nel frontend.
- Ispezionare la riga segnalata nella console del browser
- Correggere il selettore CSS, il passaggio dei parametri o la delegazione con .on()
- Ricaricare la pagina con cache svuotata (Ctrl+F5) per verificare la risoluzione
Domande frequenti
Come risolvere l'errore Errore jQuery: Uso di .attr() anziché .prop() per Proprietà Booleane (checked, disabled) in jQuery?
Dalla versione 1.6 in poi, '.attr()' legge l'attributo statico dell'HTML iniziale, mentre '.prop()' legge e imposta lo stato booleano dinamico corrente della proprietà del DOM; verificare sempre lo stato di checkbox e radio con '.prop("checked")'.
Approfondimenti
- jQuery API Documentation / jQuery Core Issues documentazione_ufficiale