单击链接时如何使 Onclick 代码不执行

Posted

技术标签:

【中文标题】单击链接时如何使 Onclick 代码不执行【英文标题】:How to make Onclick code to not execute when a link is clicked 【发布时间】:2021-09-16 17:15:47 【问题描述】:

如果点击了超链接,不确定如何让此代码不触发

$(document).ready(function () 

  $('.accordion-list > li > .answer').hide();

  $('.accordion-list > li').click(function () 
    if ($(this).hasClass("active")) 
          
      ////if link is clicked then exit this function////
       
      $(this).removeClass("active").find(".answer").slideUp();
      
     else 
        
      $(".accordion-list > li.active .answer").slideUp();
      $(".accordion-list > li.active").removeClass("active");
      $(this).addClass("active").find(".answer").slideDown();
    
    return false;
  );

【问题讨论】:

【参考方案1】:

检查事件目标以获取单击的元素(可能是<li> 的后代)。如果目标具有<a>s 的任何祖先,则停止该函数。

$('.accordion-list > li').click(function (event) 
    if ($(this).hasClass("active")) 
        if (event.target.closest('a')) 
            // an <a> was clicked
            return;
        

【讨论】:

【参考方案2】:

试试这个以防止点击继续执行。

$(document).ready(function () 

  $('.accordion-list > li > .answer').hide();

  // ***** pass event parameter e
  $('.accordion-list > li').click(function (e) 
    if ($(this).hasClass("active")) 
          
      // ***** prevent click to continue execute 
      e.preventDefault();
      
      $(this).removeClass("active").find(".answer").slideUp();
      
     else 
        
      $(".accordion-list > li.active .answer").slideUp();
      $(".accordion-list > li.active").removeClass("active");
      $(this).addClass("active").find(".answer").slideDown();
    
    return false;
  );

【讨论】:

以上是关于单击链接时如何使 Onclick 代码不执行的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 浏览器中,链接并不总是执行 onClick 导致焦点

java wicket链接onclick代码在第二次点击时不执行

如何让一个按钮自动触发,自动执行onclick鼠标单击事件. 默认已点击.

在 React 中,如何使锚点在点击时不执行任何操作?

如果执行 onclick,如何禁用 HREF?

使用a链接时如何阻止超链接跳转