感谢您抽出宝贵时间阅读本文。我正在学习OOP,模块和构造函数,这些东西对我来说太先进了,所以我不想写下面的代码。
我试图将事件分开,这样我就可以执行函数addTwoNums()
和addThreeNums()
,具体取决于从GetAmount
返回的值的值。我知道没有为此设置speek方法。你可以做点什么来设置修理它。我迷路了。
$(document).ready(function(){
$emitter = $({})
console.log($emitter);
$("#amountItems").on('change', function(){
var amountchosen = $("#amountItems option:selected").val();
$emitter.trigger("amountUpdate", amountchosen);
});
var GetAmount = (function(){
this.mode = "";
$emitter.on("amountUpdate", function(e, val){
if(val == 2){
alert(2)
this.mode = 'addTWoNumbers'
}else if(val == 3){
alert(3)
this.mode = 'addThreeNumbers'
}else if(val== 4){
alert(4)
this.mode = 'addFourNumbers'
}
})
return {
speek : function(){
console.log(this.mode);
}
}
})();
// I think these methods should be apart of a module
function addTwoNums(){
GetAmount.speek(); //I guess i could instantiate an object
//here like (if (twonumbers = new GetAmount())) it should return addTWoNumbers
//so now i could do operation pertaining to 2 numbers
//do some function when 2 is chosen
}
function addThreeNums(){
//do some function when 3 is chosen
}
});
此外,我从另一个来源获得了那部分$emitter = $({})
,但我想知道它是如何运作的。因为$emitter
是空的
jquery obj意味着我们可以将它用于某种类型的占位符来触发事件。它就像组成一个对象只是为了对它执行操作,但它不包含任何东西。
我知道这些概念来自pub / sub类型的模式。我想我正在尝试制作一个pub / sub。
HTML:
<div class="select labelOuter">
<!-- <p>How many Items would you like to add</p> -->
<select name="" id="amountItems" data-chosen ="0">
<option selected default disabled value="">Amount of items</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>