首先,这是我的第一个问题,所以如果重复,我想提前道歉。
我有一段这样的代码:
$("#one").click(function(){
randomNumber = Math.floor(Math.random()*6)+1;
$("#two").click(function(event){
console.log(randomNumber);
});
});
第一次一切正常,但第二次我执行它显示第一个随机数,然后是第二个,等等。
答案 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);
});
});