Dato il seguente esempio HTML ...jQuery add() la funzione e il contesto di jQuery oggetti
<div id='div1'>div one</div>
<div id='div2'>div two</div>
... ho scoperto che il seguente codice jQuery ...
$('#div1').click(function() {
var $d = $(this); // Using 'this' instead of '#div1'
$d.add('#div2').remove();
});
. non ..would aggiungi #div2
al set fa riferimento $d
, ma questo codice ...
$('#div1').click(function() {
var $d = $('#div1'); // Using '#div1' instead of 'this'
$d.add('#div2').remove();
});
.. . aggiunto con successo #div2
.
, previa consultazione con Firebug, ho trovato che utilizzando $(this)
ha dato il jQuery oggetto un contesto di #div1
, ma facendo $('#div1')
ha dato l'oggetto un contesto di document
.
Date queste informazioni ho provato ...
var $d = $(this, document);
... e la funzione di add()
ha funzionato come previsto.
Quindi, ecco la domanda. Qualcuno potrebbe spiegare al mio perché viene assegnato un contesto diverso quando si utilizza $(this)
rispetto a $('#div1')
?
Grazie per la risposta. Penso che forse non sto capendo lo scopo/l'uso del contesto di un oggetto jQuery. Perché '$ d' ha un contesto di' # div1' in primo luogo invece di 'document'? – user113716
@patrick - Puoi vedere come '$ (this)' viene gestito qui: http://github.com/jquery/jquery/blob/master/src/core.js#L59 Quando fai '$ (DOMElement)' il contesto è quell'elemento DOM, proprio come funziona. Ad esempio, potresti avere a che fare con un elemento che non è nel DOM, ad esempio in un frammento di documento, quindi 'document' non sempre funziona. –
@patrick - Ho riletto il tuo post e ho riscritto la maggior parte della risposta per rispondere meglio alla tua domanda principale, spero che questo la chiarisca un po 'di più, fammi sapere se lascia ancora delle domande. –