如果用户选择“确定”,请重新调用确认窗口?

时间:2015-04-22 10:11:45

标签: javascript jquery

我刚刚开始使用jQuery,我想知道在用户选择“确定”后如何重新调用确认窗口。我知道确认框返回一个布尔值,我将需要使用if语句。但是如何重新调用匿名函数(如果可能)?我有一种感觉,我需要一个递归函数,但我不太确定。

$(function)(){
 $("#diceButton").click(function(){
  var dice = Math.floor((Math.random()*12)+1);
   var answer=confirm("You rolled "+dice+"! Roll again or quit?");
    if(answer===true)
  });
 });

如果有人能指出我朝着正确的方向前进的话,那就是我坚持的地方!

4 个答案:

答案 0 :(得分:2)

JavaScript中没有规则匿名函数不应该有名称。您可以拥有匿名函数的名称,该名称只能在函数中访问。

$(function () {
    $("#diceButton").click(function diceClick(){
        var dice = Math.floor((Math.random()*12)+1);
        if(confirm("You rolled "+dice+"! Roll again or quit?")) {
            diceClick();
        }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button id="diceButton">Dice</button>

答案 1 :(得分:1)

&#13;
&#13;
function rollDice(){
  var dice = Math.floor((Math.random()*12)+1);
  if(confirm("You rolled "+dice+"! Roll again or quit?")) {
   rollDice();
  }
}
    
rollDice();
&#13;
&#13;
&#13;

使用事件的jQuery解决方案:

&#13;
&#13;
$("#diceButton").on('dice.roll', function(){
  var dice = Math.floor((Math.random()*12)+1);
	var $self = $(this);
  if(confirm("You rolled "+dice+"! Roll again or quit?")) {
    $self.trigger('dice.roll');
  }
});

$("#diceButton").click(function(){
  $(this).trigger('dice.roll');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="diceButton">Test Your Luck</button>
&#13;
&#13;
&#13;

或者更简单的解决方案 - 只需按下按钮:

&#13;
&#13;
$("#diceButton").click(function(){
  var dice = Math.floor((Math.random()*12)+1);
  var $self = $(this);
  if(confirm("You rolled "+dice+"! Roll again or quit?")) {
    $self.click();
  }
});
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以将其包装到一个函数中,然后单击

调用它
$("#diceButton").click(roll_dice);

  function roll_dice() {
    var dice = Math.floor((Math.random()*12)+1);
    var answer=confirm("You rolled "+dice+"! Roll again or quit?");
    if(answer===true) {
        roll_dice();
    }
  }

答案 3 :(得分:0)

提取为功能:

function rollDice()
{
 var dice = Math.floor((Math.random()*12)+1);
   var answer=confirm("You rolled "+dice+"! Roll again or quit?");
    if(answer===true)
    {
      rollDice();
    }
    else return;
}

然后叫它:

$(function(){
 $("#diceButton").click(function(){
   rollDice();
  });
 });

小提琴:https://jsfiddle.net/20h8g5wt/1/