Domanda

Una volta ho visto un messaggio su jQuery affermando che in jQuery alcune proprietà hanno nomi diversi. Penso che sia stata la proprietà del valore a cui si accede a jQuery come val o qualcosa del genere. JQuery lo fa molto? È una pratica comune di jQuery per cambiare i nomi delle proprietà?

È stato utile?

Soluzione

JQuery non cambia nomi di proprietà.

JQuery implementa i suoi metodi sugli oggetti jQuery. Questi sono completamente separati dalle proprietà DOM o dai metodi DOM.

Ad esempio, è possibile recuperare il valore di qualsiasi controllo di input da un oggetto jQuery utilizzando il .val() metodo. Internamente, il .val() Metodo sull'oggetto jQuery accede al contenuto dell'oggetto DOM (forse usando il .value Proprietà), ma non sta sostituendo quella proprietà DOM in alcun modo. È ancora che tu scelga di usarlo invece.

Allo stesso modo, jQuery ha a .html() metodo che restituisce il innerHTML di un oggetto. Ancora una volta, questo è il metodo jQuery su un oggetto jQuery e non sostituisce la proprietà DOM innerHTML in ogni modo.

Ecco alcuni esempi di codice da illustrare:

<input id="test" type="text">
<div id="title">This is my Title</div>

Usando il semplice JavaScript:

var text = document.getElementById("test").value;
var title = document.getElementById("title").innerHTML;

Usando jQuery:

var text = $("#test").val();
var title = $("#title").html();

Si noti che entrambi i modi jQuery sono chiamate di metodo, non proprietà.

Anche quando si utilizzano oggetti jQuery, è possibile ottenere l'oggetto DOM fuori dall'oggetto jQuery usando il .get(n) metodo e usa la proprietà DOM, anche se di solito non esiste un motivo per farlo:

var text = $("#test").get(0).value;
var title = $("#title").get(0).innerHTML;

Altri suggerimenti

JQuery non cambia i nomi delle proprietà. JQuery restituisce istanze jQuery non elementi DOM.

Se fate $thing[0].value Funzionerà. Se fate $thing.prop("value") Funzionerà.

Se usi $thing.val(); Che è il metodo Val di JQuery (che è "gentile" di Val ma fa anche un sacco di strana magia del caso Edge), quindi "probabilmente" restituirà il valore dell'elemento DOM avvolto.

Non che io sia a conoscenza, il caso di val è perché ti consente di impostare o ottenere il valore di tutti i campi di modulo (campi di testo, pulsanti di radio, caselle di controllo, textareas, ecc.) Qualcosa che non è forse semplicemente facendo input.value in tutti i casi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top