新手问个问题。

猴头 2016-05-07 05:25:57

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<script src="js/jquery-1.7.2.min.js"></script>
<script>
function testClick(e) {
e = e || window.event;
var a = $(e.srcElement ? e.srcElement : e.target);

alert(a.html());
};

</script>
</head>
<body>
<ul>
<li>
<a href="javascript:void(0);" onclick="testClick();">
<span>spanAbc</span>
</a>
</li>
</ul>
</body>
</html>


简单的一个a标签 下面有一个 span 在a 标签内部,我给 a标签的click 事件绑定的 testClick()方法
但是为什么在 testClick 方法内,通过
e = e || window.event;
var a = $(e.srcElement ? e.srcElement : e.target);

获取到的事件源 是 span 而不是 a标签呢?
...全文
123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2016-05-07
  • 打赏
  • 举报
回复
引用 5 楼 yan_hyz 的回复:
[quote=引用 4 楼 jslang 的回复:] [quote=引用 2 楼 yan_hyz 的回复:] [quote=引用 1 楼 jslang 的回复:] $(e.srcElement ? e.srcElement : e.target)是最初产生事件的元素,它不会因事件的冒泡而改变。 要获取当前触发事件的元素可以在事件绑定的函数中用 this 获取。
如果 元素内 嵌套的有子元素,那如果点在了子元素上,是不是 子元素 和 父级 元素 都会触发 click事件?[/quote] 对。 就是“事件冒泡”[/quote] 冒泡 是 由内向外的顺序??[/quote] 是的
天际的海浪 2016-05-07
  • 打赏
  • 举报
回复
引用 3 楼 yan_hyz 的回复:
[quote=引用 1 楼 jslang 的回复:] $(e.srcElement ? e.srcElement : e.target)是最初产生事件的元素,它不会因事件的冒泡而改变。 要获取当前触发事件的元素可以在事件绑定的函数中用 this 获取。
this 获取到的是 window 啊.....[/quote] 因为你testClick不是真正的事件绑定函数。 真正的事件绑定函数是<a href="javascript:void(0);" onclick="testClick();">这个字符串被浏览器解析后生成的函数
     <script>
         function testClick(t) {
	         alert(t.innerHTML);
         };

     </script> 
            <a href="javascript:void(0);" onclick="testClick(this);">
                <span>spanAbc</span>
            </a>
猴头 2016-05-07
  • 打赏
  • 举报
回复
引用 4 楼 jslang 的回复:
[quote=引用 2 楼 yan_hyz 的回复:] [quote=引用 1 楼 jslang 的回复:] $(e.srcElement ? e.srcElement : e.target)是最初产生事件的元素,它不会因事件的冒泡而改变。 要获取当前触发事件的元素可以在事件绑定的函数中用 this 获取。
如果 元素内 嵌套的有子元素,那如果点在了子元素上,是不是 子元素 和 父级 元素 都会触发 click事件?[/quote] 对。 就是“事件冒泡”[/quote] 冒泡 是 由内向外的顺序??
天际的海浪 2016-05-07
  • 打赏
  • 举报
回复
引用 2 楼 yan_hyz 的回复:
[quote=引用 1 楼 jslang 的回复:] $(e.srcElement ? e.srcElement : e.target)是最初产生事件的元素,它不会因事件的冒泡而改变。 要获取当前触发事件的元素可以在事件绑定的函数中用 this 获取。
如果 元素内 嵌套的有子元素,那如果点在了子元素上,是不是 子元素 和 父级 元素 都会触发 click事件?[/quote] 对。 就是“事件冒泡”
猴头 2016-05-07
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
$(e.srcElement ? e.srcElement : e.target)是最初产生事件的元素,它不会因事件的冒泡而改变。 要获取当前触发事件的元素可以在事件绑定的函数中用 this 获取。
this 获取到的是 window 啊.....
天际的海浪 2016-05-07
  • 打赏
  • 举报
回复
$(e.srcElement ? e.srcElement : e.target)是最初产生事件的元素,它不会因事件的冒泡而改变。 要获取当前触发事件的元素可以在事件绑定的函数中用 this 获取。
猴头 2016-05-07
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
$(e.srcElement ? e.srcElement : e.target)是最初产生事件的元素,它不会因事件的冒泡而改变。 要获取当前触发事件的元素可以在事件绑定的函数中用 this 获取。
如果 元素内 嵌套的有子元素,那如果点在了子元素上,是不是 子元素 和 父级 元素 都会触发 click事件?

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧