event.srcelement如何获取?简单几步轻松实现!

吉云

今儿个,咱来聊聊这个小东西,这可是我前两天在捣鼓一个老项目时遇到的,还挺有意思的。

话说那天,我正给一个老掉牙的网页做维护。那网页,代码乱得跟鸡窝似的,一堆的兼容性问题。其中一个需求,就是要我搞清楚用户到底点哪个按钮。我就跟打上交道。

摸索阶段

event.srcelement如何获取?简单几步轻松实现!

我也不太清楚这玩意儿具体咋用。我只知道,它好像能告诉我,用户到底点于是我就开始动手试。

我先写个简单的HTML页面,里面放几个按钮:

<button id="btn1">按钮1</button>

<button id="btn2">按钮2</button>

<button id="btn3">按钮3</button>

event.srcelement如何获取?简单几步轻松实现!

然后,我写点JavaScript代码,想看看点击按钮时,到底是个

<script>

*('click', function(event) {

event.srcelement如何获取?简单几步轻松实现!

</script>

我打开控制台,点点那几个按钮。你猜怎么着?控制台里输出我点的那个按钮的HTML代码!

比如,我点“按钮1”,控制台就输出:

event.srcelement如何获取?简单几步轻松实现!

<button id="btn1">按钮1</button>

深入挖掘

这下我明白,这玩意儿,就是指向触发事件的那个元素。我可以通过它,拿到这个元素的各种信息,比如ID、标签名等等。

于是我修改代码,想获取一下按钮的ID:

event.srcelement如何获取?简单几步轻松实现!

<script>

*('click', function(event) {

</script>

event.srcelement如何获取?简单几步轻松实现!

这回,控制台输出的就是按钮的ID,比如“btn1”、“btn2”。

我还试试,这回输出的是“BUTTON”,都是大写的。

兼容性问题

就在我玩得起劲的时候,我突然想起来,这老项目得兼容IE!我记得,IE好像不支持,它用的是。

为验证我的想法,我赶紧找台老机器,装上IE,跑一下我的代码。果然,控制台报错,说是null或者未定义。

这可咋办?我总不能写两套代码?

event.srcelement如何获取?简单几步轻松实现!

还我想起一个技巧:可以用一个变量,来判断一下浏览器,然后根据不同的浏览器,使用不同的属性:

<script>

*('click', function(event) {

var targetElement = * ? * : *;

event.srcelement如何获取?简单几步轻松实现!

</script>

这段代码的意思是,如果存在,就用它;否则,就用。这样,不管是IE还是其他浏览器,都能正常工作。

获取父元素

后来我又遇到一个需求,要获取点击元素的父元素。这回,我用上parentElement属性。

event.srcelement如何获取?简单几步轻松实现!

比如我把上面例子的html改成下面这样,外面套一个div:

<div id="wrap">

<button id="btn1">按钮1</button>

<button id="btn2">按钮2</button>

<button id="btn3">按钮3</button>

event.srcelement如何获取?简单几步轻松实现!

</div>

我想在点击按钮的时候获取到外面这个div的id:

<script>

*('click', function(event) {

event.srcelement如何获取?简单几步轻松实现!

var targetElement = * ? * : *;

</script>

这样不管点击哪个Button我都可以顺利拿到外层div的id为wrap。

event.srcelement如何获取?简单几步轻松实现!

总结

通过这回实践,我对算是有比较深的解。这玩意儿虽然简单,但是用处还挺大的。特别是在处理一些老项目,或者需要兼容IE的时候,它能帮上不少忙。当然现在基本使用更多,但是解一下总归是好的,毕竟保不齐哪天又遇到这样的老项目。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]