人心 2019-06-27
问题描述:
分页插件jquery.pagination.js
第一次初始化时分页可用,后续再调用分页则报错$(.).pagination is not a function
的问题。
注意:在调用基于jQuery扩展的插件时,不能重复引用jQuery。
例如:首先引入jQuery-1.js
,然后引入基于jQuery的插件(jquery.pagination.js
),然后再次引入了jQuery-2.js
文件。这样的做法就是不正确的。
因为此时基于jQuery的插件(jquery.pagination.js
)中的函数其实是扩展在第一次引入的jQuery-1.js
对象上的,而在第二次引入的jQuery-2.js
文件加载完成之后会覆盖jQuery-1.js
,后续调用的jQuery方法其实都是第二次引入的jQuery-2.js
文件中的方法,此时的jQuery对象上没有插件的扩展方法。
以下代码详细讲解了整个js的执行过程:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="jquery-1.js"></script> <script src="jquery.pagination.js"></script> </head> <body> <div id="page1"></div> <div id="page2"></div> <div id="page3"></div> <button type="button" id="btn"></button> <script> var page1 = $('#page1');//jquery-1对象 $('#page2').pagination();//能正确调用 console.log($.fn.jquery);//jquery-1的版本号 console.log($.fn.pagination);//pagination扩展函数 $('#btn').click(function(){ console.log($.fn.jquery);//jquery-2的版本号 console.log($.fn.pagination);//undefined page1.pagination();//能正确调用。 $.fn.pagination扩展在了jquery-1上 $('#page3').pagination();//报错。jquery-2已覆盖jquery-1,此时调用的是jquery-2上的方法得到jquery-2对象 }); </script> <script src="jquery-2.js"></script> </body> </html>
总结:在调用基于jQuery扩展的插件时,注意不要重复引用jQuery。