微信小程序开发 专题
专题目录
您的位置:微信小程序开发 > 微信小程序开发专题 > 微信小程序API WXML节点信息
微信小程序API WXML节点信息
作者:--    发布时间:2019-11-20

基础库 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 对象的方法列表:

方法参数说明
selectselector参考下面详细介绍
selectallselector参考下面详细介绍
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      // 节点的id
        rect.dataset // 节点的dataset
        rect.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的第一个参数中返回。

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册