点击功能里面的jQuery点击功能

时间:2016-03-09 09:59:02

标签: javascript jquery

首先,这是我的第一个问题,所以如果重复,我想提前道歉。

我有一段这样的代码:

$("#one").click(function(){ 
    randomNumber = Math.floor(Math.random()*6)+1;
    $("#two").click(function(event){
        console.log(randomNumber);
    });
});

第一次一切正常,但第二次我执行它显示第一个随机数,然后是第二个,等等。

3 个答案:

答案 0 :(得分:1)

当点击#one时,会生成randomNumber并分配#two的处理程序。这意味着随后对#one的点击添加了多个处理程序,这意味着代码将被输出多次。

如果你想只有一个处理程序,你可以做这样的事情

(function(){
     var randomNumber;
     $("#one").click(function(){
         randomNumber = Math.floor(Math.random() * 6) + 1;
     });

     $("#two").click(function(){
         if(randomNumber){
             console.log(randomNumber);
         }
     });
})(} 

编辑:为randomNumber添加了测试,这意味着它只在单击第一个按钮后才会发生。 `

答案 1 :(得分:0)

尝试这样。

$(document).ready(function(){
    $("#one").click(function(){ 
    randomNumber = Math.floor(Math.random()*6)+1;
    $("#two").click(function(event){
        console.log(randomNumber);
    });
  });
});

答案 2 :(得分:0)

  

我期望的行为是:1.单击#one,然后随机数为   生成2。单击#two,将打印随机数,但是   仅在单击第一个按钮时,否则,第二个按钮会   什么都没有。

您可以使用.off()方法删除以前绑定的事件处理程序。这样可以防止出现“ 显示第一个随机数,然后显示第二个随机数,等等

$("#one").on('click', function(){ 
    randomNumber = Math.floor(Math.random()*6)+1;
    $("#two").off('click').on('click', function(event){ // Preserve other event handlers if any.
        console.log(randomNumber);
    });
});