2009-05-21 18 views
15

Sto tentando di modificare tutti i collegamenti su una pagina in modo che eseguano un lavoro aggiuntivo quando viene fatto clic.JavaScript: aggiunta di un gestore onClick senza sovrascrivere quello esistente

Un approccio banale potrebbe essere qualcosa di simile:

function adaptLinks() 
{ 
    var links = document.getElementsByTagName('a'); 
    for(i = 0; i != links.length; i++) 
    { 
     links[i].onclick = function (e) 
     { 
      <do some work> 
      return true; 
     } 
    } 
} 

Ma alcuni dei collegamenti già un gestore onClick che dovrebbe essere preservato. Ho provato quanto segue:

function adaptLinks() 
{ 
    var links = document.getElementsByTagName('a'); 
    for(i = 0; i != links.length; i++) 
    { 
     var oldOnClick = links[i].onclick; 
     links[i].onclick = function (e) 
     { 
      if(oldOnClick != null && !oldOnClick()) 
      { 
       return false; 
      } 
      <do some work> 
      return true; 
     } 
    } 
} 

Ma questo non funziona perché oldOnClick viene valutata solo quando il gestore viene chiamato (contiene il valore dell'ultimo collegamento come questo punto).

+0

ho visto che molti compiti simili aroun d qui vengono risolti usando jQuery. Attualmente sto esaminando come sembra facilitare anche molti altri compiti. – rluba

risposta

Problemi correlati