基础库 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 对象的方法列表:
| 方法 | 参数 | 说明 |
|---|---|---|
| select | selector | 参考下面详细介绍 |
| selectall | selector | 参考下面详细介绍 |
| selectviewport | 参考下面详细介绍 | |
| exec | [callback] | 参考下面详细介绍 |
在当前页面下选择第一个匹配选择器selector的节点,返回一个nodesref对象实例,可以用于获取节点信息。
selector类似于css的选择器,但仅支持下列语法。
#the-id.a-class.another-class.the-parent > #the-child.a-class#a-node, .some-other-nodes在当前页面下选择匹配选择器selector的节点,返回一个nodesref对象实例。 与selectorquery.selectnode(selector)不同的是,它选择所有匹配选择器的节点。
选择显示区域,可用于获取显示区域的尺寸、滚动位置等信息,返回一个nodesref对象实例。
添加节点的布局位置的查询请求,相对于显示区域,以像素为单位。其功能类似于dom的getboundingclientrect。返回值是nodesref对应的selectorquery。
返回的节点信息中,每个节点的位置用left、right、top、bottom、width、height字段描述。如果提供了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()
}
})添加节点的滚动位置查询请求,以像素为单位。节点必须是scroll-view或者viewport。返回值是nodesref对应的selectorquery。
返回的节点信息中,每个节点的滚动位置用scrollleft、scrollheight字段描述。如果提供了callback回调函数,在执行selectquery的exec方法后,节点信息会在callback中返回。
示例代码:
page({
getscrolloffset: function(){
wx.createselectorquery().selectviewport().scrolloffset(function(res){
res.id // 节点的id
res.dataset // 节点的dataset
res.scrollleft // 节点的水平滚动位置
res.scrolltop // 节点的竖直滚动位置
}).exec()
}
})获取节点的相关信息,需要获取的字段在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()
}
})执行所有的请求,请求结果按请求次序构成数组,在callback的第一个参数中返回。