query-node.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /**
  2. * 获取当前页面中,选择器为 selector 的第一个node节点
  3. * @param {String} selector 符合微信小程序规范的选择器
  4. * @param {Object} context 调用环境,普通页面中为wx,自定义组件中为this;默认值为wx.
  5. * @return {Array} 返回一个数组,第一个元素为 node 节点
  6. */
  7. export const querySelector = function (selector, context = wx) {
  8. return new Promise((resolve, reject) => {
  9. // setTimeout(() => {
  10. context.createSelectorQuery()
  11. .select(selector)
  12. .boundingClientRect((res) => {
  13. if (res) {
  14. resolve(res);
  15. } else {
  16. reject(`不存在选择器为 ${selector} 的wxml`);
  17. }
  18. })
  19. .exec();
  20. // }, 100);
  21. })
  22. };
  23. /**
  24. * 获取当前页面中,选择器为 selector 的所有node节点
  25. * @param {String} selector 符合微信小程序规范的选择器
  26. * @param {Object} context 调用环境,普通页面中为wx,自定义组件中为this;默认值为wx.
  27. * @return {Array} 返回一个数组,每个元素为 node 节点
  28. */
  29. export const querySelectorAll = function (selector, context = wx) {
  30. return new Promise((resolve, reject) => {
  31. context.createSelectorQuery()
  32. .selectAll(selector)
  33. .boundingClientRect((res) => {
  34. if (res && res.length) {
  35. resolve(res);
  36. } else {
  37. reject(`不存在选择器为 ${selector} 的wxml`);
  38. }
  39. })
  40. .exec();
  41. })
  42. };