jQuery事件排序

时间:2014-03-30 03:01:53

标签: jquery twitter-bootstrap events

我正在编写一个jQuery插件,要求用户单击两次以执行普通的点击处理程序。该插件位于:https://github.com/aduyng/bootstrap-confirm-button

我所做的是当在按钮上调用bootstrapConfirmButton()时,我删除所有单击事件处理程序,附加我的事件处理程序,最后在第二次单击时调用所有原始单击事件处理程序。到目前为止,它工作正常并完成工作。但是,如果在bootstrapConfirmButton()之后注册另一个单击事件处理程序,则在第一次单击时仍会调用它。

如何解决此问题,或者如果您有解决方案,是否可以分叉存储库并进行修复?

1 个答案:

答案 0 :(得分:1)

我使用stopPropagation而不是stopImmediatePropagation,而是将调用移到附近的条件内,以便在第二次单击按钮时允许传播。这是你之后的行为吗?

$this.bind('click', function (event) {
    // Old stuff:
    //event.preventDefault();
    //event.stopPropagation();

    var settings = $(event.currentTarget).data('settings');
    if (!$this.hasClass(settings.class)) {
        set($this);

        // New stuff:
        event.preventDefault();
        event.stopImmediatePropagation();

        return;
    }
    settings.sure(event, $this);
});