2012-03-14 9 views
9

Ho un legame con questo href:Come passare il riferimento a "questo" sulla funzione href javascript?

href="javascript:foo(this);" 

quando lo chiamo io "questo" indica l'oggetto finestra, non il link. Come posso passare un riferimento al link?

http://jsfiddle.net/xMGKz/

Modifica nota: La domanda è: come passare con href, in generale non - so di onclick!

E non copiare id e creare getElementById, non è "questo", è ricerca DOM per determinati elementi, non è necessario renderlo in linea in HTML.

L'anwer è: non possibile.

risposta

18

Quando si utilizza "javascript: ...." in un href, si chiama globaly questa funzione. Non nel contesto del link. Si può provare con:

<a href="#" onclick="foo(this); return false;">MyLink</a> 

http://jsfiddle.net/xMGKz/1/

+1

in questa chiamata, 'questo' si riferirà all'elemento' a' a prescindere. sebbene questo metodo di associazione degli eventi non sia raccomandato, è meglio legarlo alla rappresentazione dell'oggetto di ancoraggio, non all'elemento DOM. –

+0

@Eliran Malka: Questo è ciò che Lxx stava chiedendo ... per passare l'elemento A per riferimento. – MatuDuke

+0

So che funziona con onclick, mi chiedevo solo perché non funziona con href. Non c'è modo quindi di ottenere riferimenti a questo con href, se è chiamato globalmente. – Ixx

1

In primo luogo, aggiungere un campo ID per l'ancora.

Poi ...

usando JavaScript standard:

<a id="someLink" href="javascript:foo(document.getElementById('someLink'));"> 

Utilizzando jQuery:

<a id="someLink" href="javascript:foo($('#someLink'));"> 
+0

Ma questo mi fa inserire l'id 2 volte per ogni link nel testo e questo è qualcosa che voglio evitare. – Ixx

4

soggettivamente si sarebbe più adatto con qualcosa di simile:

<a href="javascript:void(0)" id="myAnchor">My Link</a> 

e poi in codice:

document.getElementById('myAnchor').onclick = function() { 
    // this is the <a> in here 
    return false; // optional, prevents href from executing at all 
}; 

questo modo tutto è un po 'più chiaro. spero che questo aiuti -ck

3

Meglio a;

<a href="javascript:void(0)" onclick="alert(this.href);">Link</a> 
Problemi correlati