2009-04-23 2 views
0

С внутренней стороны функции fireAlert(), как я могу ссылаться на элемент, который вызвал его, без необходимости передавать this в качестве аргумента по ссылке?Как я могу ссылаться на элемент, содержащий событие, из вызываемой функции?

<script type="text/javascript"> 

//function 
function fireAlert(){ 
    alert(); 
} 

</script> 

<a href="javascript:;" onclick="fireAlert();">Fire</a> 
+0

Я использую YUI. До сих пор ни один из ответов не работал для меня. –

ответ

1

Есть более простые способы сделать это с jQuery, но это, как это делается без него:

UPDATE: Пожалуйста, попробуйте следующий HTML/JavaScript код. Обратите внимание, как я добавляю событие onclick внутри window.onload вместо указания его как атрибута элемента.

В этом примере я привязываю событие ко всем тэгам привязки на странице, но вы можете заменить getElementsByTagName на getElementById для определенного.

<html> 
    <head> 
     <script language="javascript"> 
     function fireAlert(e) 
     { 
      var whoCalled = e ? e.target : event.srcElement; 

      alert(whoCalled.innerHTML); 
     } 
     window.onload=function() 
     { 
      var allHrefs = document.getElementsByTagName("a"); 
      for(i=0;i<allHrefs.length;i++) 
      { 
       allHrefs[i].onclick=fireAlert; 
      } 
     } 
     </script> 
    </head> 
    <body> 
     <a href="#">Hello #1</a> 
     <a href="#">Hello #2</a> 
     <a href="#">Hello #3</a> 
     <a href="#">Hello #4</a>   
    </body> 
</html> 
+0

Является ли srcElement конкретным только для IE? – hbw

+0

Это правильно. Я обновил свой пост, чтобы отразить это. –

+0

Это решение не работало ни в FF, ни в IE7. "window.event undefined". Используя Firebug, я не могу найти какой-либо объект с именем event. Я могу найти событие onclick с его связанным элементом в стеке (в Firebug), но я не знаю, как ссылаться на это в коде. –

0

Как сказал Хосе, с jQuery было бы легко.

$(document).ready(function() 
{ 
    $("a").click(function() 
    { 
     // this == the clicked element 
    }); 
}); 
+0

Я использую YUI. Поэтому, если бы был простой способ сделать это с YUI, это тоже сработало бы. –

Смежные вопросы