温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

微信小程序如何获取节点

发布时间:2022-03-15 11:09:41 来源:亿速云 阅读:2587 作者:小新 栏目:开发技术

小编给大家分享一下微信小程序如何获取节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

wx.createSelectorQuery()


基础库 1.4.0 开始支持,低版本需做兼容处理


返回一个SelectorQuery对象实例。可以在这个实例上使用select等方法选择节点,并使用boundingClientRect等方法选择需要查询的信息。

示例代码:

Page({
  queryMultipleNodes: function(){var query = wx.createSelectorQuery()
    query.select('#the-id').boundingClientRect()
    query.selectViewport().scrollOffset()
    query.exec(function(res){
      res[0].top       // #the-id节点的上边界坐标  res[1].scrollTop // 显示区域的竖直滚动位置})
  }
})

selectorQuery

selectorQuery 对象的方法列表:

方法 参数 说明
select selector 参考下面详细介绍
selectAll selector 参考下面详细介绍
selectViewport   参考下面详细介绍
exec [callback] 参考下面详细介绍

selectorQuery.select(selector)


在当前页面下选择第一个匹配选择器selector的节点,返回一个NodesRef对象实例,可以用于获取节点信息。

selector类似于CSS的选择器,但仅支持下列语法。

  • ID选择器:#the-id

  • class选择器(可以连续指定多个):.a-class.another-class

  • 子元素选择器:.the-parent > #the-child.a-class

  • 多选择器的并集:#a-node, .some-other-nodes

selectorQuery.selectAll(selector)


在当前页面下选择匹配选择器selector的节点,返回一个NodesRef对象实例。 与selectorQuery.selectNode(selector)不同的是,它选择所有匹配选择器的节点。

selectorQuery.selectViewport()


选择显示区域,可用于获取显示区域的尺寸、滚动位置等信息,返回一个NodesRef对象实例。

nodesRef.boundingClientRect([callback])


添加节点的布局位置的查询请求,相对于显示区域,以像素为单位。其功能类似于DOM的getBoundingClientRect。返回值是nodesRef对应的selectorQuery。

返回的节点信息中,每个节点的位置用leftrighttopbottomwidthheight字段描述。如果提供了callback回调函数,在执行selectQuery的exec方法后,节点信息会在callback中返回。

示例代码:

Page({
  getRect: function(){
    wx.createSelectorQuery().select('#the-id').boundingClientRect(function(rect){
      rect.id      // 节点的ID  rect.dataset // 节点的dataset  rect.left    // 节点的左边界坐标  rect.right   // 节点的右边界坐标  rect.top     // 节点的上边界坐标  rect.bottom  // 节点的下边界坐标  rect.width   // 节点的宽度  rect.height  // 节点的高度}).exec()
  },
  getAllRects: function(){
    wx.createSelectorQuery().selectAll('.a-class').boundingClientRect(function(rects){
      rects.forEach(function(rect){
        rect.id      // 节点的IDrect.dataset // 节点的datasetrect.left    // 节点的左边界坐标rect.right   // 节点的右边界坐标rect.top     // 节点的上边界坐标rect.bottom  // 节点的下边界坐标rect.width   // 节点的宽度rect.height  // 节点的高度  })
    }).exec()
  }
})

nodesRef.scrollOffset([callback])


添加节点的滚动位置查询请求,以像素为单位。节点必须是scroll-view或者viewport。返回值是nodesRef对应的selectorQuery。

返回的节点信息中,每个节点的滚动位置用scrollLeftscrollHeight字段描述。如果提供了callback回调函数,在执行selectQuery的exec方法后,节点信息会在callback中返回。

示例代码:

Page({
  getScrollOffset: function(){
    wx.createSelectorQuery().selectViewport().scrollOffset(function(res){
      res.id      // 节点的ID  res.dataset // 节点的dataset  res.scrollLeft // 节点的水平滚动位置  res.scrollTop  // 节点的竖直滚动位置}).exec()
  }
})

nodesRef.fields(fields, [callback])


获取节点的相关信息,需要获取的字段在fields中指定。返回值是nodesRef对应的selectorQuery。可指定获取的字段包括:

字段名 默认值 说明
id 是否返回节点id
dataset 是否返回节点dataset
rect 是否返回节点布局位置(left right top bottom
size 是否返回节点尺寸(width height
scrollOffset 是否返回节点的 scrollLeft scrollTop ,节点必须是scroll-view或者viewport
properties[] 指定属性名列表,返回节点对应属性名的当前属性值(只能获得组件文档中标注的常规属性值, id class style 和事件绑定的属性值不可获取)

示例代码:

Page({
  getFields: function(){
    wx.createSelectorQuery().select('#the-id').fields({
      dataset: true,
      size: true,
      scrollOffset: true,
      properties: ['scrollX', 'scrollY']
    }, function(res){
      res.dataset    // 节点的dataset  res.width      // 节点的宽度  res.height     // 节点的高度  res.scrollLeft // 节点的水平滚动位置  res.scrollTop  // 节点的竖直滚动位置  res.scrollX    // 节点 scroll-x 属性的当前值  res.scrollY    // 节点 scroll-x 属性的当前值}).exec()
  }
})

selectorQuery.exec([callback])


执行所有的请求,请求结果按请求次序构成数组,在callback的第一个参数中返回。

以上是“微信小程序如何获取节点”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI