需要单击两次才能触发.one()函数

时间:2018-05-08 09:13:44

标签: javascript jquery

我需要在我的代码中进行geta切换功能,所以我搜索了它并得到了它。现在我将它实现到我的代码中(下面的代码已经简化),但是你必须单击两次按钮才能使它正常工作。点击两次后它正常工作。

导致此问题的原因是什么?如何解决此问题?



var triggerbtn = $('#trigger');

function showThis() {
  triggerbtn.text('Show this!');
  $(this).one("click", hideThis);
}

function hideThis() {
  triggerbtn.text('Hide this!');
  $(this).one("click", showThis);
}

triggerbtn.one("click", showThis);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="trigger">Show this!</button>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

按钮的默认状态为show,第一次点击时,您再次尝试show它。第一次点击应该是hide

var triggerbtn = $('#trigger');

function showThis() {
  triggerbtn.text('Show this!');
  $(this).one("click", hideThis);
}

function hideThis() {
  triggerbtn.text('Hide this!');
  $(this).one("click", showThis);
}

triggerbtn.one("click", hideThis);  // Here is the change
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="trigger">Show this!</button>