检索<a>标记并移除以使其'已禁用'

Retrieve onclick listeners of an <a> tag and remove to make it 'disabled'

本文关键字:lt gt 检索      更新时间:2023-09-26

首先,这个问题源于HTML锚不能设置为disabled

我的网站上有很多锚(<a>标签(,用作按钮、列表、菜单项等。它们不能禁用,但在某些情况下,我需要禁用它们。为了让他们成为残疾人,我计划做以下事情:

  1. 将类添加到特定的锚点,这将使它们变灰并"不可点击">
  2. 暂时删除所有它的onclick事件,然后重新附加它。我计划通过:

    1. 检索所有onclick处理程序,并将其保存到functions()Array中,以备以后再次启用(我还不知道怎么做!(
    2. 然后删除所有onclick侦听器

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


编辑:伙计们,我很感激关于如何禁用主播的答案。。。但是这不是我的问题。有些解决方案在我的场景中是不可能的(太复杂了,无法在这里讨论(,上面的解决方案是目前我能做的最简单的事情。我真正想知道的是如何执行这样的操作:

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事件分配给锚点父级,以便考虑任何更改。

演示中的HTML:

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

这是一个演示

如果在onClick事件上返回false,则它将取消该事件。如果返回true,它将正常进行。如果您使用的是jQuery,您可以使用以下代码段:

jQuery:

$('a.something').click(function (e) {
      //do nothing  
      e.preventDefault();
});

javascript:

function clickLink(){
   if(condition)
             return false;
}