我正在编写一个jQuery插件,要求用户单击两次以执行普通的点击处理程序。该插件位于:https://github.com/aduyng/bootstrap-confirm-button。
我所做的是当在按钮上调用bootstrapConfirmButton()时,我删除所有单击事件处理程序,附加我的事件处理程序,最后在第二次单击时调用所有原始单击事件处理程序。到目前为止,它工作正常并完成工作。但是,如果在bootstrapConfirmButton()之后注册另一个单击事件处理程序,则在第一次单击时仍会调用它。
如何解决此问题,或者如果您有解决方案,是否可以分叉存储库并进行修复?
答案 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);
});