問題描述:
分頁外掛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。