快乐答题器 - 在绑定事件上查找回调

happy clicker - looking for callback on bound event

本文关键字:事件 查找 回调 绑定 快乐      更新时间:2023-09-26

>我正在将一些稍微复杂的功能绑定到单击事件

$(someSelector)).bind('click', someFunction(a,b,c));
function somefunction(a,b,c) {
    return function() {
        // some logic
        $(anotherSelector).each(function() {
            // fade out with call back...
            $(this).fadeOut("fast", function() {
                // TODO: add callback here???
                $(contentSelector).fadeIn("fast");
            })
        })
    }
}

问题在于,一系列快速点击会导致不一致的淡出/淡入行为。我假设在当前 fadeIn 完成之前处理新的点击事件。

我想我正在寻找一些回调机制,以确保在当前点击完成后处理新点击。我可以添加一个回调来淡入,但我看不出我的逻辑会在那里帮助我......

我还读过有关只要处理单击(然后重新绑定它们)就取消绑定组件的信息,但同样 - 我不确定我会把它放在哪个逻辑之上。

感谢您的建议:)

你可以

利用jQuery的.on.off方法:

$someElement = $(someSelector)
$someElement.on('click', someFunction(a, b, c));
function someFunction(a, b, c) {
  // detach the event handler
  $someElement.off('click', someFunction);
  /* useful stuff here */
  // reattach the event handler
  $someElement.on('click', someFunction(a, b, c));
}

我缓存了jQuery元素的地方。

或者,您可以在回调范围之外创建一个变量,在回调中检查并设置其值:

$(someSelector)).bind('click', someFunction(a,b,c));
var isWaiting = false;
function somefunction(a,b,c) {
  if (!isWaiting) {
    isWaiting = true;
    /* useful stuff here */
    isWaiting = false;
  }
}

我推荐.on/.off方法,因为它更直接地处理jQuery事件绑定过程。