jquery多版本插件脚本报错$(…)is not a function
文章摘要:jquery多版本兼容,jquery多个插件出现命名$冲突解决办法,在加载多个jquery版本,或者网站里有多个基于jquery的脚本,使用$.extend扩展时会遇到$符被占用,从而报错的情况通过noConflict释放$后重新命名实现多...
网站在加载多个jquery版本,或者网站里有多个基于jquery的脚本,使用$.extend扩展时会遇到$符被占用,从而报错的情况。实例是在使用图片懒加载插件jquery.lazyload.js的时候,如果你在网站其他位置使用了其他的基于jquery的插件脚本,有可能报错信息:
fuzhi.html:12 Uncaught TypeError: $(...).lazyload is not a function
at HTMLDocument.<anonymous> (fuzhi.html:12)
at c (jquery.min.js:3)
at Object.fireWith [as resolveWith] (jquery.min.js:3)
at Function.ready (jquery.min.js:3)
at HTMLDocument.H (jquery.min.js:3)
这个错误即是,lazyload脚本是基于jquery的,使用的时候使用了$符号,而在网站如果还是用基于jquery的插件时,默认也是使用$符,这样就冲突了。解决办法也很容易,要么使用lazyload的时候换个符号,要么在使用其他插件的之前将$符释放。
方法一:
使用lazyload时将$(function()改成jQuery(document).ready(function ($),内部可以保存不变。
$(function() {
$("img.lazy").lazyload({
effect: "fadeIn"
});
});
//改为
jQuery(document).ready(function ($) {
$("img.lazy").lazyload({
effect: "fadeIn"
});
});
方法二:
在使用其他插件的时候先使用noConflict()方法将$符释放,复制给一个自定义的名字,然后在函数内部在赋给其$,这样函数内部也可以保存不变
var jq = $.noConflict();
jq(document).ready(function($) {
//函数体
})
网站多个jquery插件兼容解决办法实例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.bootcss.com/jquery_lazyload/1.8.3/jquery.lazyload.js"></script>
<script type="text/javascript">
$(function() { // 方法一,改成 jQuery(document).ready(function ($) {
$("img.lazy").lazyload({
effect: "fadeIn"
});
});
</script>
</head>
<body>
<div><a href="https://www.baidu.com">点击11</a></div>
<div><a href="#">点击22</a></div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="code.js 这个是基于jquery的插件"></script>
<script>
// 方法二:
var jq = $.noConflict(); //释放$符号 并将后面加载的jquery版本命名为jq(相当于$)
console.log(jq().jquery); //3.4 jq设置了后加载的jquery版本
console.log($().jquery); //1.9 $给了之前的jquery版本,如果本来就没有之前版本,$会报错未定义
jq(document).ready(function($) { //函数内部从新赋值$ 内部仍然可以使用$
console.log($().jquery); //3.4
console.log(jq().jquery); //3.4
}); </script>
</html>
版权免责申明
① 本站源码模板等资源SVIP用户永久不限量免费下载
② 所有资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你有源码需要出售,可以联系管理详谈。
⑤ 本站提供的源码、模板、插件等等资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。
⑧ 网站资源绝不做任何二次加密或添加后门(原版加密除外)
① 本站源码模板等资源SVIP用户永久不限量免费下载
② 所有资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你有源码需要出售,可以联系管理详谈。
⑤ 本站提供的源码、模板、插件等等资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。
⑧ 网站资源绝不做任何二次加密或添加后门(原版加密除外)
常见问题F&Q
- 需要积分的资源怎么下载?
- 您可以注册后签到等活跃动作获得积分,积分可下载,也可充值升级等级免费下载。
- 源码模板等文件安全吗?有没有后门病毒吗?
- 站内资源标有“已测试”标签的资源源码,表示已经在本地安装测试调试过才分享出来的,可以保证一定的安全;若不放心可以自行下载模板资源后使用D盾等查杀工具扫一遍确认安全。
- 本站网站模板等源码提供安装服务吗?
- 本站资源收集于网络并分享出来共同学习,不提供免费安装服务,模板源码安装等需要有一定熟悉度,小白用户可以下载资源后雇人安装调试。
