小程序点击时获取当前元素的id

之前我是这么写的,

但是会给提示这些错误,

Component "pages/newgift/newgift" does not have a method "radioChanges(items.id)" to handle event "tap".

大概意思就是:组件“pages/newgift/newgift”没有一个方法“radioChanges(goodsitem.id)”来处理事件“tap”。

在网上参考了其他大佬的方案:

给当前元素加上一个自定义属性:data-id

 

这样我们就可以实现在点击时拿到当前元素的id 啦。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取当前在 `scroll-view` 内的元素,可以使用 `scroll-view` 的 `scroll-into-view` 属性和 `bindscrolltoupper/bindscrolltolower` 事件来实现。 首先,在需要滚动到的元素上设置一个唯一的 `id`,例如: ```html <scroll-view scroll-y="true" scroll-into-view="{{currentId}}" bindscrolltoupper="upper" bindscrolltolower="lower"> <view id="element1">第一个元素</view> <view id="element2">第二个元素</view> <view id="element3">第三个元素</view> <view id="element4">第四个元素</view> <view id="element5">第五个元素</view> <view id="element6">第六个元素</view> <view id="element7">第七个元素</view> <view id="element8">第八个元素</view> <view id="element9">第九个元素</view> </scroll-view> ``` 然后在js中,定义一个 `currentId` 变量来存储当前在可视区域内的元素的 `id`,并在 `bindscrolltoupper/bindscrolltolower` 事件中获取当前可视区域内最顶部的元素和最底部的元素的 `id`,从而更新 `currentId` 变量。具体代码如下: ```javascript Page({ data: { currentId: 'element1' // 默认为第一个元素id }, upper: function (e) { // 获取当前可视区域内最顶部的元素id wx.createSelectorQuery().selectViewport().scrollOffset(function(res){ wx.createSelectorQuery().selectAll('.element').boundingClientRect(function(rects){ rects.forEach(function(rect){ if(rect.top <= res.scrollTop){ this.setData({ currentId: rect.id }) } }) }).exec() }).exec() }, lower: function (e) { // 获取当前可视区域内最底部的元素id wx.createSelectorQuery().selectViewport().scrollOffset(function(res){ wx.createSelectorQuery().selectAll('.element').boundingClientRect(function(rects){ rects.forEach(function(rect){ if(rect.bottom >= res.scrollTop + res.height){ this.setData({ currentId: rect.id }) } }) }).exec() }).exec() } }) ``` 这样,当用户滚动 `scroll-view` ,就会根据当前可视区域内最顶部或最底部的元素的 `id` 来更新 `currentId` 变量,从而得到当前在可视区域内的元素。注意,要在需要滚动到的元素上设置 `class="element"`,以便于在 `selectAll` 方法中选中所有元素

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值