在click事件上扩展jQuery

Wan*_*eho 3 jquery jquery-events

我需要找到一种全局方法来阻止jQuery on('click')事件触发,如果一个锚具有disabled ="disabled"(是的,我知道这不是一个锚的有效属性)属性集.锚也可以随时动态设置为禁用.

另一个问题是当我在"框架"中工作时触发命令,并且App类加载第一个和后续类,其后加载锚事件.理想情况下,id喜欢在App类中有一些东西阻止"子"类事件被触发,但是当前子类事件首先触发,然后使用stopPropagation()的App事件也不起作用.

我对一些解决方案很谨慎,比如如何订购与jQuery绑定的事件,因为你可以看到这可能会在jQuery版本之间中断.

A. *_*lff 5

如果未停止单击事件传播,则委派事件将起作用:

$(document).on('click', 'a[disabled]', function(e){
  e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用CSS规则:

a[disabled] {
  pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)

如果您希望事件在其任何后代之前在父级别上触发,请捕获它,例如:

document.addEventListener('click', function(e){
  if($(e.target).closest('a[disabled]').length) {
    // do something which be fired before any click handler bound to `.parentClass *`
    // e.g prevent any other event
    e.stopImmediatePropagation();
    // and prevent default anchor click behaviour
    e.preventDefault();
  }
}, true);
Run Code Online (Sandbox Code Playgroud)