2009-04-23 6 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の内部にどのように付加しているかに注目してください。

この例では、ページ内のすべてのアンカータグにイベントを添付していますが、getElementsByTagNamegetElementByIdに置き換えることができます。

<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は未定義です"。 Firebugを使用すると、eventという名前のオブジェクトは見つかりません。私はonclickイベントをスタック(Firebugの)に関連する要素で見つけることができますが、コード内でそれを参照する方法はわかりません。 –

0

joseが言ったように、jQueryは簡単です。

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

私はYUIを使用しています。ですから、YUIでこれを行う簡単な方法があれば、それもうまくいくでしょう。 –

関連する問題