【问题标题】:Two buttons to toggle between two functions and a single function两个按钮可在两个功能和一个功能之间切换
【发布时间】:2018-06-14 16:33:50
【问题描述】:

有 2 个按钮和两个功能。

Button1 应该在函数 A 和函数 B 之间切换。 Button2 应该始终只触发函数 B。

$("#hamburger").click( toggleAB );

$("#close").click(function(){
   functionB();
});

functionA(){ //expand menu }
functionB(){ //collapse menu }

function toggleAB(){
    var el = this;
    return [
      function() { functionA(); },
      function() { functionB(); }
    ][el.tog^=1]();
}

目前$("#hamburger") 在这两个功能之间完美切换。但是如果我点击$("#close")按钮,那么我必须点击$("#hamburger")按钮两次才能继续在两个功能之间切换。

我的问题是即使$("#close") 按钮被点击,我如何让$("#hamburger") 在函数A 和函数B 之间切换?

【问题讨论】:

  • 哇...为什么我觉得[el.tog^=1]();部分的代码太复杂了?
  • @PraveenKumar 感谢您的回复。请提出一种更简单的方法来在这两个功能之间切换..

标签: javascript jquery jquery-ui


【解决方案1】:

实现这一点的最简单方法是在按钮上存储一个标志,这样您就可以知道最后调用了哪个函数,这样您就知道接下来要调用哪个函数。试试这个:

$("#hamburger").click(function() {
  var clicks = $(this).data('clicks') || 0;
  clicks % 2 == 0 ? functionA() : functionB();
  $(this).data('clicks', ++clicks);
});

$("#close").click(function() {
  functionB();
});

function functionA() {
  console.log('A');
}
function functionB() {
  console.log('B');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="hamburger">Hamburger</button>
<button id="close">Close</button>

【讨论】:

  • 谢谢。让我试一试。
  • 不起作用。我猜这是因为var clicks = $(this).data('clicks') || 0;$("#hamburger") 点击功能内?
  • 它在我上面添加的sn-p中显然有效,因此您的版本可能存在问题。检查控制台是否存在页面其他地方的错误
  • 不,clicks 的范围是正确的。它应该在#hamburger 点击处理程序中
猜你喜欢
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多