javascript - 检索 <a> 标签的 onclick 监听器并删除以使其变为 'disabled'

标签 javascript jquery

First of all, this problem originates from the fact the HTML anchor cannot be set to disabled.

我的网站中有很多 anchor (<a> 标签),用作按钮、列表、菜单项等。它们无法禁用,但在某些情况下,我需要禁用它们。为了使它们禁用,我计划执行以下操作:

  1. 向特定 anchor 添加类,使其灰显且“不可点击”
  2. 暂时删除所有 onclick事件并在之后重新附加它。我计划通过以下方式做到这一点:

    1. 检索所有 onclick处理程序并将其保存到 Arrayfunctions()稍后检索,以防您以后想再次启用它。 (我还不知道该怎么做!)
    2. 然后删除所有 onclick听众

我要求一种仅检索 onclick 事件处理程序的方法,但我看到的只是检索所有类型的附加事件。

<小时/>

编辑:伙计们,我很欣赏有关如何禁用 anchor 的答案...但是[你知道,]这不是我的问题。有些解决方案在我的场景中是不可能的(太复杂,无法在这里讨论),而上面的解决方案是目前我能做的最简单的事情。我真正想知道的是如何执行这样的事情:

var handlers = []
handlers = $("#anchor").getClickEvents()

最佳答案

你可以尝试这样的事情:

$('body').on('click', 'a:not(.disabled)', function(){
    console.log($(this).text() + ' was clicked');
}).on('click', 'a.disabled', function(e){
    e.preventDefault();
});

$('a').trigger('click');
$('a.disabled').removeClass('disabled');
$('a').trigger('click');

.on 事件分配给 anchor 父级,以便考虑任何更改。

演示中的 HTML:

<a href="#">1</a>
<a href="#">2</a>
<a href="#">3</a>
<a href="#" class="disabled">4</a>

Here is a demo

关于javascript - 检索 <a> 标签的 onclick 监听器并删除以使其变为 'disabled',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31849708/

相关文章:

javascript - 将两个 HTML div 的尺寸相互链接?

php - jTable jQuery 插件 为什么我的 MySQL 存储过程失败?

jquery - 按钮未在数据表中触发

javascript - 使用 jQuery 更改一个元素的 CSS 不起作用

javascript - 用于检查数字字段不具有/或具有所有相同数字的正则表达式

javascript - Node js和mysql将带逗号的数字转换为 float

javascript - 在初始页面加载时通过 Ajax 加载内容的设计模式

javascript - 元素上的多次单击绑定(bind)仅执行 Knockout.js 中的一个?

javascript - 带有传递参数的 Angular Promise 链接

javascript - 使用 ember-intl 异步加载翻译