5.初步的框架
建立必要的頁面
我建立的目錄結構是這樣子的:
base.html程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<script src="../src/jquery-1.11.2.min.js"></script>
<script src="../src/jquery.quantitySelect.js"></script>
<link href="../css/css.css" rel="stylesheet">
</head>
<body>
<div class="num-box fl">
<a href="javascript:;" class="num-add fr">+</a>
<a href="javascript:;" class="num-cut fl num-lose">-</a>
<span class="num-number">1</span>
</div>
<div class="det-msg">
</div>
<script type="text/javascript">
$(function() {
var quantity = $('.num-box').quantity({
cutBtn: '.num-cut',
addBtn: '.num-add',
numBox: '.num-number',
msgBox: '.det-msg'
});
});
</script>
</body>
</html>
css.css程式碼
a {
color: #333;
text-decoration: none;
}
.fl {
float: left;
}
.fr {
float: right;
}
.num-box,
.det-msg {
height: 28px;
line-height: 28px;
margin: 0 10px 0 0;
}
.num-box {
border: 1px solid #b3b3b3;
width: 80px;
text-align: center;
}
.num-box a {
display: block;
width: 24px;
height: 28px;
cursor: pointer;
background: #efefef;
}
.num-cut {
border-right: 1px solid #b3b3b3;
}
.num-add {
border-left: 1px solid #b3b3b3;
}
.num-number {
font-size: 16px;
}
a.num-lose {
color: #aaa;
background: #fefefe;
cursor: not-allowed;
}
jquery.quantitySelect.js程式碼
;
(function($) {
function Quantity(opt) {
this.init(opt);
}
Quantity.prototype.init = function(opt) {
console.log(opt);
};
$.fn.quantity = function(opt) {
return new Quantity(opt);
};
}(jQuery));
創立初步js框架
有了這些基本的檔案之後,就可以著接敲程式碼了。根據之前的分析,於是我很快的了下面這樣一段程式碼。
;
(function($) {
function Quantity(opt) {
this.addBtn = null; //加按鈕
this.cutBtn = null; //減按鈕
this.numBox = null; //數量div
this.msgBox = null; //訊息div
this.minbuy = 1; //最小購買量
this.maxbuy = 99; //最大購買量
this.stock = 99; //存量
this.tuple = 1; //倍數購買
this.init(opt);
}
//初始化
Quantity.prototype.init = function(opt) {
console.log(opt);
};
//設定最小購買量
Quantity.prototype.setMinbuy = function() {
};
//設定最大購買量
Quantity.prototype.setMaxbuy = function() {
};
//設定庫存
Quantity.prototype.setStock = function() {
};
//設定倍數購買
Quantity.prototype.setTuple = function() {
};
$.fn.quantity = function(opt) {
return new Quantity(opt);
};
}(jQuery));
剛才新增的程式碼主要幹三件事。
1.在建構函式內,定義使用者介面配置項。
2.在建構函式內,定義運營需求配置項。
3.在原連結上擴充套件可更改運營需求配置項的方法。
獲取引數
萌是褒義詞還是貶義詞?網上給的答案說,看長像。在初學者心裡曾經都有一個很萌的問題,為什麼老是看到有init()這樣子的函式呢?
看一下英文單詞initialize,初始化的意思。噢原來這樣子,有了這個單詞,我們就知道這個方法是用來初始化的,在javascript裡面,也可以認為這是一個入口的方法。所有攻城獅都約定這麼寫之後,也是方便大家讀程式碼的。
所以我選擇了在這個方法裡面來獲取引數,之前程式碼有這樣子一段
//初始化
Quantity.prototype.init = function (opt) {
console.log(opt); //Object {cutBtn: ".num-cut", addBtn: ".num-add", numBox: ".num-number", msgBox: ".det-msg"}
};
不錯,在init方法裡面,我們已經可以拿到外部給我們的引數了。 那麼我們就把這個值存起來吧!那麼程式碼就是這樣子的了。
//初始化
Quantity.prototype.init = function (opt) {
console.log(opt);
this.addBtn = opt.addBtn;
this.cutBtn = opt.cutBtn;
this.numBox = opt.numBox;
this.msgBox = opt.msgBox;
};
很好!傳進來的引數我們已經存好了,但是我們會發現網上很多外掛在呼叫的時候,是可以不傳引數的,那麼我們在呼叫的時候程式碼改成這樣子:
$(function() {
var quantity = $('.num-box').quantity();
});
成龍的一下,報錯了:"Uncaught TypeError: Cannot read property 'addBtn' of undefined"。因此我們在寫外掛的時候也是要相容這種寫法的。即預設可以不傳引數,解決方法也很多,最簡單的方法如下:
//初始化
Quantity.prototype.init = function (opt) {
opt = opt || {}; //加這麼一行就可以了
console.log(opt); //Object {}
this.addBtn = opt.addBtn;
this.cutBtn = opt.cutBtn;
this.numBox = opt.numBox;
this.msgBox = opt.msgBox;
};
只要加那麼一行就行了,我們也發現這時的opt其實轉成了{},所以就不報錯了。
這裡的程式碼有一個小坑,為什麼opt前面沒有var呢?因為在這個函式體內部,opt其實已經被定義過了,如果你前面再加var 相當於又重新定義了一次。雖然這樣子也是可以正常的執行,但是這是沒有必要的。
相關文章
- 老周的ABP框架系列教程 -》 一、框架理論初步學習框架
- PHP DIY 系列------框架篇:5. 自定義配置和路由PHP框架路由
- Linux網橋原始碼框架分析初步(轉)Linux原始碼框架
- 初步瞭解Express(基於node.js的後端框架)ExpressNode.js後端框架
- 5.編寫recipe
- 5. SQL回顧SQL
- 5.磁碟結構
- 前端的初步----呼叫介面前端
- Git的初步學習Git
- ActiveMQ的初步瞭解MQ
- JAVA POI的初步使用Java
- 5.注意Dart中的布林值Dart
- 好程式設計師web學習路線初步認知react框架程式設計師WebReact框架
- 5. PHP 函式 strstr ()PHP函式
- 5.第二個Activity
- 5. U-Boot移植boot
- 【譯】5. Java反射——方法Java反射
- 5.裝置中斷
- 5.行為型模式模式
- Dart中的Stream初步研究Dart
- 網站的初步製作網站
- Oracle 審計的初步操作Oracle
- MMF的初步介紹:一個規範化的視覺-語言多模態任務框架視覺框架
- 【Python】5.物件導向的PythonPython物件
- 設計模式的征途—5.原型(Prototype)模式設計模式原型
- SED 手冊 - 5.常用的 regular expression(轉)Express
- Ajax初步理解
- 初步筆記筆記
- Css初步教程CSS
- Axios初步iOS
- 5. SQL 編寫規範SQL
- 5.虛擬記憶體記憶體
- 【PAT】5. 動態規劃動態規劃
- 5. ActiveMQ平滑遷移到kafkaMQKafka
- 5.判斷和迴圈
- Statspack初步學和用第三篇 分析初步
- JDBC的初步瞭解及使用JDBC
- 對函式的初步瞭解函式