解決SUI Mobile中$.init()報錯的問題
阿新 • • 發佈:2018-12-25
本人是第一次使用SUI Mobile框架,在根據文件學習使用時,發現總是報錯:$.init is not a function。以為是需要引入JQuery的原因,但是引用JQuery之後發現還是報錯,按照JQuery語法修改後仍然不對,後來根據SUI Mobile官網上的例項查看了原始碼,認真對比之後發現,報錯是由程式碼中對js的引用位置不對而引起的。
修改錯誤之前的程式碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登入</title >
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<!-- SUI Mobile中的css檔案 -->
<link rel="stylesheet" href="//g.alicdn.com/msui/sm/0.6.2/css/sm.css">
<!-- 自己定義的css檔案 -->
<link rel="stylesheet" href="css/login.css">
<!-- jquery的js檔案 -->
<script src="js/jquery-3.2.1.min.js" ></script>
<!-- 自己定義的js檔案 -->
<script src="js/login.js"></script>
</head>
<body>
<div class="page-group">
<div class="page">
<div class="content">
<div class="list-block">
<ul>
<li>
<div class="item-content" >
<div class="item-media">
<i class="icon icon-form-name"></i>
</div>
<div class="item-inner">
<div class="item-input">
<input type="text" placeholder="賬號">
</div>
</div>
</div>
</li>
<li>
<div class="item-content">
<div class="item-media">
<i class="icon icon-form-password"></i>
</div>
<div class="item-inner">
<div class="item-input">
<input type="password" placeholder="密碼">
</div>
</div>
</div>
</li>
<li>
<div class="item-content">
<div class="item-media">
<i class="icon icon-form-role"></i>
</div>
<div class="item-inner">
<div class="item-input">
<p>
<a href="#" class="create-actions">請選擇登入角色</a>
</p>
</div>
</div>
</div>
</li>
</ul>
</div>
<div class="col-50">
<a href="#" class="button button-big button-fill button-success">登入</a>
</div>
</div>
</div>
</div>
<!-- SUI Mobile框架用到的js檔案 -->
<script type='text/javascript'
src='//g.alicdn.com/sj/lib/zepto/zepto.js' charset='utf-8'></script>
<script type='text/javascript'
src='//g.alicdn.com/msui/sm/0.6.2/js/sm.js' charset='utf-8'></script>
</body>
</html>
**注意:**在這段程式碼中,我在<head>
元素中引用了jquery-3.2.1.min…js檔案,在<body>
中引用了zepto.js和sm.js。其實jquery和zepto都是JavaScript庫,只不過zepto更加輕量。
此時,瀏覽器報的錯誤為:
後來在程式碼中加入了SUI Mobile擴充套件包的js引用(插入到引用zepto.js的語句之前):
<script type='text/javascript'
src='//g.alicdn.com/msui/sm/0.6.2/js/??sm.min.js,sm-extend.min.js'
charset='utf-8'></script>
然後報出的錯誤多了一個:
此時,我意識到我對js檔案的引用順序出了錯,然後我又開啟SUI Mobile官網中的示例,認真比對其原始碼之後,將我對js的引用順序修改為如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登入</title>
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<!-- 引用SUI Mobile框架的css檔案 -->
<link rel="stylesheet" href="//g.alicdn.com/msui/sm/0.6.2/css/sm.css">
<link rel="stylesheet"
href="//g.alicdn.com/msui/sm/0.6.2/css/??sm.min.css,sm-extend.min.css">
<!-- 自己定義的css檔案 -->
<link rel="stylesheet" href="css/login.css">
<!-- zepto.js的引用 -->
<script src='//g.alicdn.com/sj/lib/zepto/zepto.js'></script>
</head>
<body>
<div class="page-group">
<div class="page">
...(省略頁面佈局程式碼)
</div>
</div>
<!-- 引用SUI Mobile框架的js檔案 -->
<script src='//g.alicdn.com/msui/sm/0.6.2/js/sm.js'></script>
<script
src='//g.alicdn.com/msui/sm/0.6.2/js/??sm.min.js,sm-extend.min.js'></script>
<!-- 自己定義的js檔案 -->
<script src="js/gtms.js"></script>
</body>
</html>
此時,再次開啟瀏覽器,專案可以正常執行且沒有報錯。
在這段程式碼中要注意的點為:
- 對JavaScript庫的引用要放在
<head>
元素中; - 對SUI Mobile框架的js檔案的引用要放在
<body>
元素中; - 對自己定義的js/css檔案的引用一定要放在對框架的引用之後,否則會出錯。
以上即是本次使用SUI Mobile框架的一點筆記,希望能幫到大家。