有几种方法可以做到这一点 - stopImmediatePropagation
; jQuery._data(this, 'events')
使用验证函数获取所有事件并将其包装;解除绑定事件并将它们绑定回来。
但是,在我看来,最方便和正确的方法是创建自定义事件,例如permitted
and unpermitted
,并附加到它而不是click
. 这样,您将能够同时拥有权限感知和简单的处理程序。此外,代码将变得更具可读性,因为您将看到哪些方法需要权限。
$("selector")
.on('permitted', function() {
// executed if permission check passed
})
.on('unpermitted', function() {
// executed if permission check failed
})
.on('click', function() {
// executed always!
});
您可以在click
处理程序中调度这些事件,
$(document).on('click', '[check-permission]', function(e) {
var checkResult;
// custom permission validation logic
this.dispatchEvent(new CustomEvent(checkResult ? 'permitted' : 'unpermitted'));
e.preventDefault();
});
附加所有需要这些权限的操作,permitted
它将起作用。
这是有效的 JSFiddle 演示。在此示例中,如果选中复选框decrease
,increase
按钮会更改这些链接的大小。permit
否则,它会显示错误。
但是,在客户端实现权限验证只能用于装饰目的。你不应该依赖这个。应在服务器端实施适当的、安全的和不可妥协的授权。