2011-08-29 18 views
16

Stavo leggendo il http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery. E si è confuso con l'uso di this in questi 2 segmenti di codice.

 $(document).ready(function() { 
     $("#orderedlist").find("li").each(function(i) { 
     $(this).append(" BAM! " + i); 
     }); 
    }); 

    $(document).ready(function() { 
     // use this to reset several forms at once 
     $("#reset").click(function() { 
     $("form").each(function() { 
     this.reset(); 
     }); 
    }); 
    }); 

Quando abbiamo bisogno $(this) e this? E qual è la differenza tra loro? Grazie in anticipo.

+3

possibile duplicato di [Qual è la differenza tra "this", "$ this" e "$ (this)"?] (Http://stackoverflow.com/questions/3889570/what-is-the-difference- tra-questo-e-questo) – user113716

+1

@patrick: non penso che sia un duplicato. Vale la pena di rispondere perché '$ (this)' è necessario in una parte di questo particolare codice mentre 'this' è necessario in una parte diversa. – Blazemonger

+1

@ mblase75: Beh, immagino di non essere d'accordo. Questa risposta, abbinata a quanto già spiegato dal tutorial, ne fa un duplicato. Leggere le risposte all'altra domanda dovrebbe risolverlo. Dal tutorial: * "Notare che in una funzione' .each() ',' this' si riferisce all'elemento reale. "* – user113716

risposta

16

this si riferisce all'elemento DOM stesso; $(this) avvolge l'elemento in un oggetto jQuery.

Nel primo esempio, è necessario $(this) perché .append() è un metodo jQuery.

Nel secondo esempio, reset() è un metodo JavaScript, quindi non è necessario alcun wrapper jQuery.

7

this di per sé è solo un oggetto normale.

$(this) prende this e aggiunge il wrapper jQuery in modo da poter utilizzare i metodi jQuery con l'oggetto.

3

this fa riferimento a un oggetto DOM. Quindi reset() è una funzione di un oggetto DOM del modulo. append() d'altra parte è un metodo jQuery quindi deve essere chiamato da un oggetto jQuery, da cui il $(this).

Quando si circonda this con $, viene restituito un oggetto jQuery che rappresenta tale oggetto DOM.

2

Generalmente in jQuery, this sarà un'istanza dell'elemento DOM in questione, e $(this) costruisce un oggetto jQuery intorno this che vi dà i soliti metodi di jQuery come each() e val().

1

è necessario solo $ (questo) se lo si sta seguendo con una funzione jquery sulla stessa riga di codice.

ex: $(this).find(...); $(this).val(); etc 

oppure è necessario solo this.

Problemi correlati