兼容模式下jQuery 3.2.1生成的选择器传入函数后是否仍对应原版本
结论
你完全不用担心版本混用问题:只要jQuerySelectorItem是通过$jq_321选择器生成的,它调用的所有方法(包括你标注行用到的attr、后续用到的is)都会使用3.2.1版本的jQuery,和页面原有1.4.2版本没有任何冲突。你当前的代码写法完全正确。
原理说明
- 每个jQuery版本加载后,都会生成独立的构造函数和原型链(即
jQuery.fn),调用对应版本的工厂函数(此处就是你声明的$jq_321)返回的jQuery对象,原型链固定指向当前版本的fn,和全局的jQuery/$变量没有绑定关系。 - 你调用
jQuery.noConflict(true)的作用只是把全局作用域下的jQuery和$变量还原为加载3.2.1之前的值,不会修改已经生成的jQuery对象的原型链指向。
验证方法
你可以在toggleFunction第一行添加一行日志直接确认传入对象绑定的jQuery版本:
console.log(jQuerySelectorItem.jquery) // 执行后会输出3.2.1
注意事项
只有当你传入的jQuerySelectorItem是页面原有1.4.2版本的jQuery/$生成的对象时,才会调用旧版本的方法。只要你在代码中生成选择器对象统一使用$jq_321,就不会出现版本混用问题。
内容的提问来源于stack exchange,提问作者Skary
相关产品推荐
相关产品推荐

