澳门新葡萄京官网注册 8

微信小程序的 bindtap 中 e.target 是指谁?

在网页中,我们可以将一个 img 放到
textarea 上面,在微信小程序中也可以。但是仅仅是看着可以而已,image 不再响应
bindtap,因为 textarea 层级很高,点击 image 时,会被
textarea 拦截,所以无法响应 image 的 bindtap。

小程序list数据带值跳转,一可以直接通过设置item的id来标识或者通过设置键值data-xxxx的方式标识

  1. 澳门新葡萄京官网注册 ,设置id的方法标识跳转在要跳转的item处,设置一个id并给当前的id赋值上对应的key值,比如一部电影的id(后面带着id去下一个页面查询,详细信息)如:

澳门新葡萄京官网注册 1image

后我们在js的bindtap的响应事件中获取,并传递到下一个界面中;

通过e.currentTarget.id;获取设置的id值,并通过设置全局对象的方式来传递数值,//获取全局对象
var app=getApp(); //设置全局的请求访问传递的参数
app.requestDetailid=id;

澳门新葡萄京官网注册 2image

tip:其实我们也可以在,wxml中查看到我们设置的每一个item的id值

澳门新葡萄京官网注册 3image

  1. 通过使用data – xxxx 的方法来标识,xxxx可以自定义取名
    比如data-key等等都可以。

澳门新葡萄京官网注册 4image澳门新葡萄京官网注册 5image

在js的bindtap的响应事件中:

通过数据解析一层层找到数据,

var id=e.target.dataset.id(根据你的data-id的取名)

澳门新葡萄京官网注册 6image澳门新葡萄京官网注册 7image

上面的方式设置好了之后,页面跳转后,我们就需要在下一个页面拿到传递的数据(这个数据在传递前,就已经被设置成全局变量)

在跳转后的js页面,接收传递过来的数据detail.js

同样通过全局额方式取值出来,(即和app.js中取某个变量的值是一样的)

var movieid=getApp().MovieDetailid;console.log;

澳门新葡萄京官网注册 8image

  • 到此为止,我们数值传递并接收成功,后面就可以根据我们接收的参数,进行进一步的操作了。

<view data-id=”123″ bindtap=”gogogo”> <image></image>
</view>

类似的 video 等标签也是。

再看 JS 代码:

gogogo: function (e) { e.target.dataset.id }

现在在 image 上点击按钮:

  • 会触发 bindtap=”gogogo” 吗?会
  • 那么这个 e.target 是指 view 还是指 image 呢?image

结论就是:点击时它会向上寻找 bindtap,但是它传送的 target 还是自身。

所以上面的代码,为了保证 e.target.dataset.id 正确传送,我们也应该给
image 指定 data-id。

发表评论

电子邮件地址不会被公开。 必填项已用*标注