javascript - 关于百度团队的touch.js 事件代理下,点击监听元素的子元素,当前元素($(this))却不是监听元素
PHPz
PHPz 2017-04-10 15:50:56
[JavaScript讨论组]

最近才开始使用touch.js,用的是百度团队的那个。
使用中如下面的代码,如果我使用jquery,监听的是js_close,最终我们的this指向的是监听元素,无论是点击其本身还是其子元素。
但在touchjs下面,我并未对子元素进行阻止冒泡操作,点击子元素<span>,得到的this是<span>,而不是我意想中的父元素js_close。
难道事件委托和事件代理是2个不同的概念?
恳请理解的朋友给予解答,谢谢!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>touch使用</title>
</head>
<body>
<p class="box">

<p class="js_close"><span>点我点我</span></p>

</p>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/touch.min.js"></script>
<script type="text/javascript">
$(function(){

touch.on('.js_close','tap',document,function(e){
  //e.preventDefault();
  console.log(e.target.nodeName);
  console.log($(this));
})
$(document).on('click','.js_close',function(e){
  console.log(e.target.nodeName);
  console.log($(this));
});

});
</script>
</body>
</html>

PHPz
PHPz

学习是最好的投资!

全部回复(1)
大家讲道理

百度的touch.js是通过给document元素添加事件来代理到具体的触发元素上,实际上document元素上绑定了touchstart、touchmove等,然后根据暴露的API,触发相应的元素上的事件,这个你可以阅读以下源码。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号