【问题标题】:Choose only the first button只选择第一个按钮
【发布时间】:2016-12-12 01:41:22
【问题描述】:

如果您单击“是”或“否”,我正在尝试做到这一点。现在如果你第一次点击“no”,第二次点击“yes”,它会执行两次。

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

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

感谢帮助

【问题讨论】:

  • 你能粘贴你的完整代码还是为你的场景创建一个 jsfiddle
  • 您正在设置 2 个事件处理程序。您要么只需要设置 1 个事件处理程序$('.confirm-button').one("click", function() { ... } 来处理两个按钮(检查“是”/“否”值并做出适当响应),或者您需要在“是”时取消绑定“其他”事件处理程序或“否”被触发。

标签: javascript jquery html ajax dom


【解决方案1】:

我假设这两个事件都附加在 document.ready 中,这意味着它们将无限期保持活动状态,除非您另外指定。

以下方法相当基本,只需将变量“hasClicked”设置为 false。并且只要单击其中任何一个,就将“hasClicked”设置为true。每个按钮都有一个 if 结构,仅在 'hasClicked' 为 false 时执行代码。

尝试以下方法:

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
        }
    });

}

【讨论】:

    【解决方案2】:

    由于您无法取消绑定与 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
    });
    

    【讨论】:

    • 我不会解绑东西,它是 ong 代码,但这是唯一不能正常工作的东西
    • 您不能更改正在处理的代码?另一种解决方案是使用布尔值来处理是否仍需要执行该操作,但您回答说@Tom-Nijs 的提议不起作用:/
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-23
      • 2011-08-13
      • 1970-01-01
      • 2017-06-28
      • 2018-08-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多