Javascript 如何从调用的函数中引用包含事件的元素?
从Javascript 如何从调用的函数中引用包含事件的元素?,javascript,dom-events,yui,Javascript,Dom Events,Yui,从fireAlert()函数的内部,我如何引用调用它的元素,而不必通过链接将this作为参数传递 <script type="text/javascript"> //function function fireAlert(){ alert(); } </script> <a href="javascript:;" onclick="fireAlert();">Fire</a>
fireAlert()
函数的内部,我如何引用调用它的元素,而不必通过链接将this
作为参数传递
<script type="text/javascript">
//function
function fireAlert(){
alert();
}
</script>
<a href="javascript:;" onclick="fireAlert();">Fire</a>
//作用
函数fireAlert(){
警惕();
}
有更简单的方法可以使用,但没有它,情况就是这样:
更新:请尝试以下HTML/Javascript代码。请注意,我是如何在window.onload内部附加onclick事件,而不是将其指定为元素的属性
在本例中,我将事件附加到页面中的所有锚定标记,但是对于特定的锚定标记,您可以将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>
功能fireAlert(e)
{
var whoCalled=e?e.target:event.src元素;
警报(whoCalled.innerHTML);
}
window.onload=function()
{
var allHrefs=document.getElementsByTagName(“a”);
对于(i=0;i
正如Jose所说,使用jQuery很容易
$(document).ready(function()
{
$("a").click(function()
{
// this == the clicked element
});
});
srcElement不是只针对IE吗?此解决方案在FF或IE7中都不起作用。“window.event未定义”。使用Firebug,我找不到任何名为event的对象。我能够在堆栈中找到onclick事件及其关联元素(在Firebug中),但我不知道如何在代码中引用它。@Jamis-我用我在FF、IE7和Chrome中测试过的新代码更新了我的原始帖子。@Jose-谢谢。我知道,如果你悄悄地添加事件,你可以在函数中引用e作为事件(一种方法是使用YUI的event.addeventlistener()函数).在使用内联事件时,您是否有任何方法可以引用事件e,即“”?我对此进行了深入研究,但在FF中不起作用,因为它没有事件对象。我使用YUI。因此,如果有一种简单的方法可以使用YUI,那也会起作用。我使用YUI。到目前为止,没有一个答案对我有效。