最新版jQuery与jQuery UI兼容问题:getClientRects is not a function报错
jQuery 3.7.0 + jQuery UI 1.13.2 报错排查方案
针对你遇到的getClientRects is not a function和TypeError: Class constructor p cannot be invoked without 'new'两个报错,可按以下方向排查:
检查DOM元素有效性
getClientRects is not a function的核心原因是调用该方法的对象不是合法DOM元素。排查:- 初始化jQuery UI组件时,选择器是否匹配到了实际存在的元素(避免
null/undefined传入) - 元素是否在UI初始化前被动态移除或隐藏
- 确认代码中没有把jQuery对象直接当成原生DOM元素调用方法(需用
.get(0)或[0]取原生元素)
- 初始化jQuery UI组件时,选择器是否匹配到了实际存在的元素(避免
排查ES6类转译或冲突问题
TypeError: Class constructor p cannot be invoked without 'new'通常和类的转译或第三方脚本干扰有关:- 若项目用Babel等工具转译代码,检查配置是否正确处理了ES6类(避免将jQuery UI内部的类转译成无法正确实例化的形式)
- 排查是否有其他脚本修改了原生
Class构造函数的行为,或覆盖了jQuery UI的内部类
确认脚本加载与初始化顺序
- 确保jQuery(3.7.0)在jQuery UI(1.13.2)之前加载,顺序颠倒会导致UI组件无法正常初始化
- 把UI组件的初始化代码放在
$(document).ready()回调中,或放在页面底部(确保DOM完全渲染后再执行)
排查第三方库冲突
若页面存在其他JS库(如Prototype、Zepto),可能会和jQuery产生变量或方法冲突:- 尝试使用
jQuery.noConflict()隔离jQuery变量 - 逐一禁用其他非必要脚本,定位是否有脚本干扰了jQuery UI的内部逻辑
- 尝试使用
内容的提问来源于stack exchange,提问作者TS'
相关产品推荐
相关产品推荐

