jQuery scrollTop功能不生效且VSCode中offset()报ts(2339)错误如何解决?
问题排查及解决方法
1. 核心错误原因
你的代码存在多处语法问题,是功能失效和IDE报错的直接诱因:
- 元素选择器
$('html, body')缺少闭合单引号,原代码写为$('html, body),语法不合法 - 目标滚动区域选择器前缺少jQuery标识符
$,原代码直接写('.js--section-plan'),没有被包装为jQuery对象,自然不存在offset()方法,这也是TS报错Property does not exist的直接原因 scrollTop赋值逻辑中存在冗余的点号,同时元素选择器存在不必要的换行,打断了正常语法结构
2. 修正后可运行代码
$('.js--scroll-to-plans').click(function() { $('html, body').animate({ scrollTop: $('.js--section-plan').offset().top }, 1000) })
3. 残留TS报错解决方案
如果修正语法后VSCode仍然报TS2339错误,是因为项目缺少jQuery的类型声明文件,按场景处理即可:
- 项目使用npm/yarn包管理器:执行命令
npm install @types/jquery --save-dev安装声明文件 - 项目直接CDN引入jQuery:在项目根目录的全局类型声明文件(如
typings.d.ts)中添加declare var $: JQueryStatic;即可
内容的提问来源于stack exchange,提问作者Dlaw
相关产品推荐
相关产品推荐

