Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检索一个<;的onclick侦听器;a>;标记并移除,使其成为';残疾人士';_Javascript_Jquery - Fatal编程技术网

Javascript 检索一个<;的onclick侦听器;a>;标记并移除,使其成为';残疾人士';

Javascript 检索一个<;的onclick侦听器;a>;标记并移除,使其成为';残疾人士';,javascript,jquery,Javascript,Jquery,首先,这个问题源于HTML锚定不能设置为禁用 我在我的站点中有很多锚(标签)作为按钮、列表、菜单项等。它们不能被禁用,但在某些情况下,我需要禁用它们。为了使他们残疾,我计划采取以下措施: 将类添加到特定锚点,使它们灰显且“不可拾取” 暂时删除所有单击事件的itonclick事件,然后重新连接。我计划通过以下方式做到这一点: 检索所有onclick处理程序,并将其保存到函数()的数组中,以备以后再次启用。(我还不知道怎么做!) 然后删除所有的onclick侦听器 我在问一种只检索onclick事

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

我在我的站点中有很多锚(标签)作为按钮、列表、菜单项等。它们不能被禁用,但在某些情况下,我需要禁用它们。为了使他们残疾,我计划采取以下措施:

  • 将类添加到特定锚点,使它们灰显且“不可拾取”
  • 暂时删除所有单击事件的it
    onclick
    事件,然后重新连接。我计划通过以下方式做到这一点:

  • 检索所有
    onclick
    处理程序,并将其保存到
    函数()的
    数组中,以备以后再次启用。(我还不知道怎么做!)
  • 然后删除所有的
    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');
    

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

    jQuery:

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

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

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

    jQuery:

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

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

    您可以尝试以下方法:

    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>
    
    
    

    您可以尝试以下方法:

    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>
    
    
    

    相反,您可以删除src属性,例如,将该值复制到数据src属性中,然后在需要重新启用时重置它。@IanDevlin谢谢,这可以工作。。。虽然我们在这里谈论的锚是一群
    href=“#”
    …啊,好吧,这是不同的。您可以在要禁用的a元素上设置类似“数据禁用”,然后在其单击处理程序中,为具有该属性的元素返回false。也许更简单,我不明白你为什么要这么做。。您只需禁用某些链接的单击事件,而不必保存链接处理程序。相反,您可以删除src属性,例如,将该值复制到数据src属性中,然后在需要重新启用时重置它。@IanDevlin谢谢,这可能行得通。。。虽然我们在这里谈论的锚是一群
    href=“#”
    …啊,好吧,这是不同的。您可以在要禁用的a元素上设置类似“数据禁用”,然后在其单击处理程序中,为具有该属性的元素返回false。也许更简单,我不明白你为什么要这么做。。您只需禁用某些链接的单击事件,而无需保存链接处理程序。。