jQuery .each()为不同的按钮分配不同的动作

时间:2017-10-02 19:28:50

标签: jquery

正如我在上一篇文章中所说,我目前正在尝试使用jQuery进行Rock,Paper,Scissors游戏,但是,我遇到了另一个问题。我希望电脑随机选择Rock,Paper或Scissors。因此,我使用Math.random()来选择0到1之间的随机数,而不是将不同的范围分配给Rock,Paper或Scissors(我保存在变量“guess”中) 然后我想检查所选值是否与按钮(.choice2)中文本的值相对应。如果它对应于它我想将背景更改为红色,如果不是,我希望按钮消失。出于某些原因,它只是隐藏了所有按钮,但我不明白。

按钮的HTML:

<div id="main">
    <div class="col-md-6">
        <h3>Computer's Choice:</h3>
        <div class="choices">
            <button class="choice2 btn btn-submit">Rock</button>
            <button class="choice2 btn btn-submit">Paper</button>
            <button class="choice2 btn btn-submit">Scissors</button>
        </div>
    </div>
    <div class="col-md-6">
        <h3>Player's Choice:</h3>
        <div class="choices">
            <button class="choice1 btn btn-submit">Rock</button>
            <button class="choice1 btn btn-submit">Paper</button>
            <button class="choice1 btn btn-submit">Scissors</button>
        </div>
    </div>
</div>

jQuery:

$.fn.getVal = function () {
    var comp_choice = Math.random();

    if(comp_choice <= 0.33)
       var guess = "Rock"
    }
    else if ((comp_choice >0.33) && (comp_choice <= 0.66)) {
        var guess = "Paper"
    }

    else {
        var guess = "Scissors" 
    }

    $('.choice2').each(function () {

        if (guess == $('.choice2').text()) {

            $(this).css('background-color', 'blue');
        }

        else {
            $('.choice2').not($(this)).hide();
        }
   });

};

1 个答案:

答案 0 :(得分:0)

我刚修复它:而不是$('。choice2')。not($(this))。hide();我使用了$(this).hide();

$.fn.getVal = function () {

    var comp_choice = Math.random();

    var guess = '';

    if(comp_choice <= 0.33) {
        guess = "Rock"
    }
    else if ((comp_choice >0.33) && (comp_choice <= 0.66)) {
        guess = "Paper"
    }

    else {
        guess = "Scissors" 
    }

    $('.choice2').each(function () {

        if (guess == $(this).text()) {

            $(this).css('background-color', 'blue');
        }

        else {
            $(this).hide();
        }
    });

};