uni.createSelectorQuery()
返回一个SelectorQuery对象实例
createSelectorQuery是小程序的API,因小程序未开放DOM,且视图层和逻辑层分离,于是提供了一个异步的API,可以在逻辑层有限的获取一些DOM能力。
该API返回的类型为NodeRef。它和DOM的Element有区别。
大多数组件的属性和样式操作,是通过绑定vue的响应式变量data来实现的。一般不使用本API。
本API的主要用途是小程序下获取元素计算后的样式。如果您的应用不适配小程序,那么在Web和App上有更强大的UniElement。
小程序下有时用本API获取部分组件的上下文context,但这个写法不跨平台。跨平台的获取组件context,应该使用uni.createXXContext()。
createSelectorQuery 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
4.0 | 4.41 | 3.91 | 4.11 | 4.61 |
selector 说明:
selector
类似于 CSS 的选择器,但仅支持下列语法。
- ID选择器:
#the-id
- class选择器:
.a-class
返回值
SelectorQuery 的方法
in(component: any | null): SelectorQuery
将选择器的选取范围更改为自定义组件component内
in 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
- | 4.41 | - | - | - |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
component | any | 否 | - | - | |
返回值
select(selector: string): NodesRef
在当前页面下选择第一个匹配选择器selector的节点
select 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
- | 4.41 | - | - | - |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
selector | string | 是 | - | - | - |
返回值
NodesRef 的方法
boundingClientRect( callback: SelectorQueryNodeInfoCallback | null, ): SelectorQuery
添加节点的布局位置的查询请求,相对于显示区域,以像素为单位
boundingClientRect 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
- | - | - | - | - |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
callback | (result: any) => void | 否 | - | - | |
返回值
添加节点的滚动位置查询请求,以像素为单位
Web | 微信小程序 | Android | iOS | HarmonyOS |
- | - | - | - | - |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
callback | (result: any) => void | 是 | - | - | |
返回值
fields( fields: NodeField, callback: SelectorQueryNodeInfoCallback | null, ): SelectorQuery
获取节点的相关信息,需要获取的字段在fields中指定
fields 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
4.0 | 4.41 | 4.25 | 4.25 | - |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
fields | NodeField | 是 | - | - | - |
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 | id | boolean | 否 | - | - | 是否返回节点 id | dataset | boolean | 否 | - | - | 是否返回节点 dataset | rect | boolean | 否 | - | - | 是否返回节点布局位置(left right top bottom) | size | boolean | 否 | - | - | 是否返回节点尺寸(width height) | scrollOffset | boolean | 否 | - | - | 是否返回节点的 scrollLeft scrollTop,节点必须是 scroll-view 或者 viewport | properties | Array<string> | 否 | - | - | 指定属性名列表,返回节点对应属性名的当前属性值(只能获得组件文档中标注的常规属性值,id class style 和事件绑定的属性值不可获取) | computedStyle | Array<string> | 否 | - | - | 指定样式名列表,返回节点对应样式名的当前值 | context | boolean | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
|
HarmonyOS
| 4.0 | 4.41 | x | x | - |
| 是否返回节点对应的 Context 对象 | node | boolean | 否 | - | - | 是否返回节点对应的 Node 实例 |
|
callback | (result: any) => void | 否 | - | - | |
返回值
context(callback: SelectorQueryNodeInfoCallback): SelectorQuery
添加节点的 Context 对象查询请求
context 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
4.0 | 4.41 | x | x | - |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
callback | (result: any) => void | 是 | - | - | |
返回值
node(callback: (result: any) => void): SelectorQuery
获取 Node 节点实例。目前支持 Canvas 的获取。
获取节点的相关信息,需要获取的字段在fields中指定
node 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
4.0 | 4.41 | 4.25 | 4.25 | - |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
callback | (result: any) => void | 是 | - | - | - |
返回值
selectAll(selector: string): NodesRef
在当前页面下选择匹配选择器selector的所有节点
selectAll 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
- | 4.41 | - | - | - |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
selector | string | 是 | - | - | - |
返回值
selectViewport(): NodesRef
选择显示区域
selectViewport 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
- | 4.41 | - | - | - |
返回值
exec(callback: (result: Array<any>) => void | null): NodesRef | null
执行所有的请求
exec 兼容性
Web | 微信小程序 | Android | iOS | HarmonyOS |
- | 4.41 | - | - | - |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
callback | (result: Array<any>) => void | 是 | - | - | - |
返回值
NodeInfo 属性值
属性 | 类型 | 说明 |
id | String | 节点的 ID |
dataset | Object | 节点的 dataset |
left | Number | 节点的左边界坐标 |
right | Number | 节点的右边界坐标 |
top | Number | 节点的上边界坐标 |
bottom | Number | 节点的下边界坐标 |
width | Number | 节点的宽度 |
height | Number | 节点的高度 |
参见
组件内使用
示例
hello uni-app x
exec 示例说明:
exec()
返回所有动作的集合,每一项的数据类型取决于查询动作,结果排序按照调用动作顺序
示例:
通过id查询组件内多节点
和单根节点组件有所不同,有着多个根节点的组件需要透传 attribute
页面
组件 custom-component1
注意事项:
- App 平台
<template>
下如果存在多个节点,会导致非第一个节点查询不到的问题 - Web 平台
<template>
下如果存在多个节点,如果是在组件内部查询,可能会导致查询到其他组件或页面的元素
通用类型
GeneralCallbackResult
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
errMsg | string | 是 | - |
Web
|
微信小程序
|
Android
|
iOS
|
HarmonyOS
| - | 4.41 | - | - | - |
| 错误信息 |