小程序API:wx.createSelectorQuery()
该方法返回一个查询信息实例对象,在页面生命周期中获取到为null,推荐在自定义组件中使用,在组件的生命周期ready()中获取
const query = wx.createSelectorQuery()
query实例方法,可以获取不同的信息
query.select(ele)
select()方法的参数是一个元素节点,可以使用类选择器或ID选择器,如query.select('#id')
调用该方法返回一个NodesRef实例对象,const nodeRef = query.select(ele) ,可以用于获取节点信息query.selectAll(eles)
selectAll()方法同上,获取的是所有选择的节点
调用该方法返回一个NodesRef实例对象,const nodeRef = query.selectAll(ele) ,可以用于获取节点信息query.selectViewport()
query.selectViewport(),获取的是视口
调用该方法返回一个NodesRef实例对象,const nodeRef = query.selectViewport() ,可以用于获取节点信息
调用以上三个方法都会返回一个NodeRef实例对象,通俗地讲就类似一个DOM节点,通过NodesRef实例对象上的2个方法,可以获取不同的信息
-
nodeRef.boundingClientRect()
boundingClientRect()获取元素的 宽高和 元素上下左右边界的坐标值以及元素id,dataset
调用该方法后返回的依然是nodeRef实例(类似于promise里的then()返回一个promise)
那我们怎么获取信息呢?我们再调用query.exec()方法,就是执行了nodeRef.boundingClientRect()的调用
执行的结果以数组的形式在 exec(res => console.log(res))方法里获取
// 创建查询信息实例对象 query
const query = wx.createSelectorQuery()
// 这段代码的意思是选择id=text的节点,获取节点位置信息的查询请求
query.select('#text').boundingClientRect()
//res是一个数组,里面包含了元素的宽高 和 元素上下左右边界的坐标值 以及元素id,dataset
query.exec(res => console.log(res))
-
scrollOffset()
scrollOffset()获取元素的 scrollTop、scrollLeft 以及元素id,dataset
使用方法同上
// 创建查询信息实例对象 query
const query = wx.createSelectorQuery()
//这段代码的意思是选择id=text的节点,获取节点滚动位置的查询请求
query.select('#text').scrollOffset()
//res是一个数组,里面包含了元素的滚动位置 以及元素id,dataset
query.exec(res => console.log(res))