我在jQuery中构建了一个.clicktoggle函数,对于我来说,我无法在其上获得.stop之类的效果,基本上,我不希望它被mash单击时一遍又一遍地播放。

我希望将其应用到该函数中,以便其自我包含,这就是即时通讯卡住的地方。

JS fiddle link

    (function($) {
  $.fn.clickToggle = function(func1, func2) {
    var funcs = [func1, func2];
    this.data('toggleclicked', 0);
    this.click(function() {
      var data = $(this).data();
      var tc = data.toggleclicked;
      $.proxy(funcs[tc], this)();
      data.toggleclicked = (tc + 1) % 2;
    });
    return this;
  };
}(jQuery));

$('div').clickToggle(function() {
  $('.testsubject').fadeOut(500);
}, function() {
  $('.testsubject').fadeIn(500);
});




    <div class="clickme">click me fast</div>
<div class="testsubject">how do i stop it playing over and over if you click alot</div>


切换.click似乎是很多人会使用的东西,所以我认为在这里提问可能有用

最佳答案

var clicked = false;
var doing = false;

$(".clickme").click(function(e) {
  if (doing) {
    return;
  } else {
    doing = true;
  }
  doing = true;
  clicked = !clicked;
  if (clicked) {
    $('.testsubject').fadeOut(700, function() {
        doing = false
    });
  } else {
        $('.testsubject').fadeIn(700, function() {
        doing = false;
    });
  }
});


此示例是一个简单的切换,仅允许您在不执行任何操作时单击。我在IRC上进行了说明,但此处以示例为例,该函数仅在doing设置为false时才运行,只有在fadeIn()fadeOut的回调函数whatymajigger之后设置它时才会发生。

关于javascript - 防止Jquery .click切换功能因过度点击而一遍又一遍地运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36562220/

10-10 20:24