升级jQuery至3.1.1后出现andSelf/andBack不是函数的TypeError问题求助
解决jQuery 3.1.1升级后
andSelf()报错的问题 首先,你遇到的TypeError: k.fadeIn(...).children(...).andBack is not a function(推测是andSelf的笔误),核心原因非常明确:jQuery 3.x版本已经彻底移除了andSelf()方法,它的官方替代方法是addBack()。
第一步:替换废弃API修复直接报错
你的出错代码片段里:
$content.fadeIn( 'fast' ).children().andSelf().bind( 'click', function( e ){ e.stopPropagation(); });
只需要把andSelf()替换成addBack()即可,修改后代码:
$content.fadeIn( 'fast' ).children().addBack().bind( 'click', function( e ){ e.stopPropagation(); });
另外补充个小建议:bind()方法在jQuery 3.x里虽然还能兼容,但官方更推荐使用更灵活的on()方法绑定事件,所以可以进一步优化成:
$content.fadeIn( 'fast' ).children().addBack().on( 'click', function( e ){ e.stopPropagation(); });
第二步:排查jQuery重复加载的潜在问题
你提到怀疑jQuery被多次执行,这也是跨大版本升级时常见的冲突点,建议做以下检查:
- 打开页面源码,确认是否同时引入了旧版本(1.10.3)和新版本(3.1.1)的jQuery文件,确保只保留3.1.1版本
- 检查第三方插件、页面模板是否自带了jQuery,导致重复加载覆盖版本
- 可以在浏览器控制台执行
jQuery.fn.jquery,查看当前生效的jQuery版本,确认是否是3.1.1
额外升级注意事项
从jQuery 1.x跳到3.x,除了andSelf(),还有不少废弃API需要注意:
load()、unload()、error()这类事件方法已被移除,统一用on()处理$.browser对象被彻底删除,若有依赖需要自行实现浏览器判断逻辑- 事件委托的匹配规则有细微调整,确保现有事件绑定逻辑兼容新版本
内容的提问来源于stack exchange,提问作者Dhaval Rajpara
相关产品推荐
相关产品推荐

