企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
# target与currentTarget **wxss不写** ``` //wxml <view id="parent" catchtap="parent" > parent <view id="child"> child</view> </view> ``` ``` //js Page({ parent:function (e){ console.log("e.target.class名是"+e.target.id) console.log("e.currentTarget.class名是" + e.currentTarget.id) }, }) ``` ![](https://box.kancloud.cn/ff438ef2ea43f8ce61cc93d6681b3f0a_804x755.gif) ``` //target 在父元素上使用,指正在被点击的组件 console.log(event.target.dataset.title);//输出undefider,currentTarget确定触发元素,dataset 对应 data- 开头的属性,id 是具体哪一个属性。 ``` ``` //currenTarget 指事件捕获的组件 console.log(event.currenTarget.dataset.title);//parent ``` > 1.`e.target` 指向的是触发事件监听的对象。在上面,就是id为child的这个组件。 > > 2.`e.currentTarget `指向的是添加(注册)监听事件的对象。在上面,就是id为father的这个组件。 ### **注意**:“触发事件监听”的对象与“添加(注册)监听事件”的对象是不一样的!前者是能够触发该事件但没有绑定事件,后者指绑定了事件,如:`bindtap`、`catchtap`。   ### **说明:取值方面** 如果你点击的是添加事件元素的子元素,就用`e.currentTarget`来获取父元素的值,用`e.target`来获取子元素的值,如果没有子元素,就在本元素,`e.target===e.currentTarget`。 # dataset 通过使用data - xxxx 的方法标识来传值,xxxx可以自定义取名 比如`data-id`都可以。 注意,如果我们有嵌套` view`,则如果用户点击的是内层的 `view`,则 `e.target `就是内层的 `view`(尽管我们 `bindtap `是写在外层 `view`)中,所以我们应该为每一层都写在 `data-id="{{item.id}}"`。