首页 新闻 会员 周边

如何在onclick处理函数中得到触发click的HTML element

1
悬赏园豆:50 [已解决问题] 解决于 2013-08-31 19:17

示例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>
dudu的主页 dudu | 高人七级 | 园豆:30994
提问于:2012-05-31 14:54
< >
分享
最佳答案
2

同感觉,可以用在click中用$(this)获得点击的发起源,在获得其他参数,方便多了

收获园豆:50
mylhei | 菜鸟二级 |园豆:282 | 2012-06-03 17:13
其他回答(4)
0
<!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:

 

无之无 | 园豆:5095 (大侠五级) | 2012-05-31 15:00

这是方法知道,需要给whoClick传参数,我是想不传参数实现。

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2012-05-31 15:02

@dudu: 在ie里,有event.srcElement,别的浏览器就不清楚了。

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-05-31 15:05

@笨笨蜗牛: Chrome中有event.target

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2012-05-31 15:19

@dudu: 哈,查看jQuery的代码,看用的是什么来识别FF。

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-05-31 15:32

@笨笨蜗牛: $.browser.mozilla

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2012-05-31 15:39

@dudu: 貌似FF下也是用vevent.target的吧?

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-05-31 15:51

@无之无: test

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2012-07-11 18:50
0

不懂,帮顶个,关注下。。

cjh18168 | 园豆:202 (菜鸟二级) | 2012-05-31 15:09
0

不传任何参数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>
artwl | 园豆:16736 (专家六级) | 2012-05-31 15:30

这种方式,直接this就能得到:

function whoClick(){    
    console.log(this);
}
支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2012-05-31 15:32

赞同这种 

支持(0) 反对(0) Hejin.Wong | 园豆:229 (菜鸟二级) | 2013-05-02 17:42
0

感觉像专家在考我们啊

happydaily | 园豆:301 (菜鸟二级) | 2012-05-31 21:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册