只选择第一个按钮

问题描述:

我想要做的只有一个可能发生,如果你点击是或否。现在如果你第一次点击“否”,第二次点击“是”,它会执行两次。求助只选择第一个按钮

+0

您可以粘贴您的完整代码或为您的场景创建一个jsfiddle – CNKR

+0

您正在设置2个事件处理程序。你需要设置1个事件处理函数'$('。confirm-button')。one(“click”,function(){...}'处理两个按钮(检查'yes'/'no '值,并作出适当的响应),或者当'yes'或'no'被触发时,你需要解除绑定'other'事件处理程序 – Joseph

这两个事件都附在的document.ready

function confirm() { 
    $("#no").one("click", function(){ 
     return false; 
    }); 
} 

$("#yes").one("click", function() { 
    //do something 
}); 

感谢我认为,这意味着,除非另行指定,他们将保持活跃下去。

以下方法相当基本,只需将变量'hasClicked'设置为false即可。只要点击其中一个,将“hasClicked”设置为true。每个按钮都有一个只执行代码的if结构,如果'hasClicked'是假的。

尝试以下操作:

var hasClicked = false; 
function confirm(){ 

    $("#no").one("click", function(){ 
     if (!hasClicked){ 
      hasClicked = true; 
      return false; 
     } 
    }); 

    $("#yes").one("click", function() { 
     if (!hasClicked) { 
      hasClicked = true; 
      //do something 
     } 
    }); 

} 
+0

我试过..它不起作用 –

正如你不能解除用one()check this answer

绑定的事件所以你必须要解决这样的:

function confirm() { 
    $("#no").bind("click", function(){ 
     $(this).unbind(); // prevent other click events 
     $("#yes").unbind("click"); // prevent yes click event 
     // Do your stuff 
    }); 
} 

$("#yes").bind("click", function() { 
    $(this).unbind(); 
    $("#no").unbind("click"); 
    // Do your stuff 
}); 
+0

我不会解除绑定的东西,它是ong代码,但这是唯一不能正常工作 –

+0

您无法更改您正在使用的代码吗? 另一种解决方案是使用布尔值来处理动作是否仍然需要完成,但是您回答说,@汤姆 - 奈斯的主张不起作用:/ –

分配你的按钮叫做confirmation。根据类设置一个事件处理程序。阅读按钮的值来决定你想要做什么。

 $(".confirmation").one("click", function(){ 
     if($(this).val() === 'yes'){ 
     //do something 
     }else{ 
     return false; 
     } 
    } 
+0

我试过..它不起作用 –