根据事件的结果分离事件以在其他函数中执行操作

时间:2015-02-11 21:54:51

标签: javascript jquery events object

感谢您抽出宝贵时间阅读本文。我正在学习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>

0 个答案:

没有答案