示例HTML代码如下:
<!DOCTYPE HTML> <html> <head> <title>onclick test</title> <script type="text/javascript"> function whoClick(){ console.log(this); } </script> <body> <a href="javascript:void(0)" onclick="return whoClick();">Click Me</a> </body> </html>
运行结果:
Window jstest.htm
期望的结果:
<a onclick="return whoClick(this);" href="javascript:void(0)">
我的问题是:
如何不通过给whoClick()传参的方式得到这个a标签元素?
在Chrome中可以通过下面的代码实现:
function whoClick(){ console.log(event.target); }
在IE9中可以通过下面的方法:
function whoClick(){ console.log(event.srcElement); }
就剩下Firefox了。
通过jQuery绑定click事件是可以的:
<!DOCTYPE HTML> <html> <head> <title>onclick test</title> <script src="http://code.jquery.com/jquery-1.7.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ $("a").click(function() { console.log(this); }); }); </script> <body> <a href="javascript:void(0)">Click Me</a> </body> </html>
同感觉,可以用在click中用$(this)获得点击的发起源,在获得其他参数,方便多了
<!DOCTYPE HTML> <html> <head> <title>onclick test</title> <script type="text/javascript"> function whoClick(from){ console.log(from); } </script> <body> <a href="javascript:void(0)" onclick="return whoClick(this);">Click Me</a> </body> </html>
假如使用jQuery ,事件发送对象可以从this获得。
event.srcElement。
是这个吧?你应该知道这个的吧?
通过传递参数,可以写成this:
这是方法知道,需要给whoClick传参数,我是想不传参数实现。
@dudu: 在ie里,有event.srcElement,别的浏览器就不清楚了。
@笨笨蜗牛: Chrome中有event.target
@dudu: 哈,查看jQuery的代码,看用的是什么来识别FF。
@笨笨蜗牛: $.browser.mozilla
@dudu: 貌似FF下也是用vevent.target的吧?
@无之无: test
不懂,帮顶个,关注下。。
不传任何参数FireFox和IE下不行,可以试试这样:
<!DOCTYPE HTML> <html> <head> <title>onclick test</title> <script type="text/javascript"> window.onload=function(){ var aEle=document.getElementById("test"); aEle.onclick=whoClick; }; function whoClick(event){ var evnt = event||window.event; var current = evnt.target || evnt.srcElement; console.log(current.outerHTML); } </script> <body> <a id="test" href="javascript:void(0);">Click Me</a> </body> </html>
这种方式,直接this就能得到:
function whoClick(){ console.log(this); }
赞同这种
感觉像专家在考我们啊