单击事件扩展 jQuery

Extend jQuery on click event

我需要找到一个 global 方法来防止 jQuery on('click') 事件在锚有 disabled=[=20 时触发=](是的,我知道这不是锚点的有效属性)属性集。锚点也可以随时动态设置为禁用。

另一个问题是触发顺序,因为我在 "framework" 中工作,应用 class 首先加载,随后 class 加载锚点事件。理想情况下,我希望在 App class 中有一些东西可以防止 "child" class 事件触发,但目前子 class 事件首先触发,然后是 App 事件,所以使用 stopPropagation() 也不起作用。

我对 How to order events bound with jQuery 等某些解决方案持谨慎态度,因为您可以看到这可能会在 jQuery 版本之间中断。

如果单击事件传播没有停止,委托事件将起作用:

$(document).on('click', 'a[disabled]', function(e){
  e.preventDefault();
});

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

a[disabled] {
  pointer-events: none;
}

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

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);