2013-02-20 8 views
5

ho questo per exemple:Perché "questo" argomento in jQuery ritorna href con tasselli

<div id="example"> 
    <a href="http://www.google.com/#1">Hello</a> 
    <a href="http://www.google.com/#4">Hello</a> 
</div> 

E questo a due linee di jQuery:

jQuery("a").filter(function() { 
    console.log(""+this+"") 
}); 

Ritorni:

http://www.google.com/#1 

http://www.google.com/#4 

Ma

jQuery("a").filter(function() { 
    console.log(this); 
}); 

Returns

<a href="http://www.google.com/#1">Hello</a>​ 

<a href="http://www.google.com/#4">Hello</a>​ 

Perché la linea 2, restituire l'attributo HREF dell'ancora SE 'questo' argomento aggiungere una "stringa"? Il docs jQuery dice che se il filtro ha un argomento di funzione, il "this" is the current DOM element

+0

Quando si dice "Restituisce", intendi che questo è ciò che vedi nella console del browser dalle chiamate 'console.log()'? (Penso che sia ciò che intendi ...) – Pointy

+0

Hai messo quei 2 risultati nel verso sbagliato? "" + questo + "" dovrebbe restituire il valore di href - http://jsfiddle.net/9muyj/ –

+0

Sì, i risultati sono invertiti. –

risposta

12

""+this è equivalente a this.toString(). Su un elemento a restituisce il href (sì, è strano, e probabilmente per compatibilità con qualcosa che è stato utile molto tempo fa, ma è quello che fa su tutti i browser).

Nel secondo caso, non si sta chiamando toString ma il metodo di formattazione della console dipendente dal browser. Sono state fatte diverse scelte: su Chrome, ad esempio, di solito restituisce l'html esterno (come un albero sfogliabile se è grande).

+0

Esiste una specifica per la restituzione di 'href'? Quando ho iniziato a scrivere la mia risposta (che ho poi abbandonato a favore della tua), volevo dire che dipendeva anche dall'implementazione - ma non ne sono sicuro. – Bergi

+0

Non ho trovato alcuna spec ma è una specie di (poco) fatto noto ed è apparentemente universale. Il vecchio motivo è probabilmente ridicolo e mi piacerebbe saperlo ... –

+0

http://www.w3.org/html/wg/drafts/html/master/text-level-semantics.html#the-a- l'elemento "stringificatore" è l'href e il bersaglio se non esiste. –

Problemi correlati