You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery下拉菜单链接无法点击问题求助

问题:下拉菜单内链接无法正常跳转

编写了如下代码,点击下拉菜单中的任意链接均无法跳转,示例代码如下:

原代码

JavaScript

$(document).ready(function() {
  $('body').on('click', '.dropdown_parent', function(e) {
    e.preventDefault();
    e.stopPropagation();
    var getId = $(this).attr("data-id");
    if (
      $('#drop_' + getId).is(":visible")) {
      $('#drop_' + getId).hide();
    } else {
      $('.dropdown_child').hide();
      $('#drop_' + getId).show();
    }
  });
});

CSS

.dropdown_parent {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  cursor: pointer;
}

.dropdown_child {
  padding: 10px;
  z-index: 9;
  background-color: #FFF;
  min-width: 100%;
  color: #373737;
  box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
  width: 100%;
  display: none;
  position: absolute;
}

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.slim.min.js"></script>
<div class="dropdown_parent" data-id="111">
  <div id="down_parent">drop menu ...</div>
  <div style="left: 0px; width: 120px; display: none;" id="drop_111" class="dropdown_child text-start">
    <a href="https://www.google.com">google</a><br>
    <a href="https://www.facebook.com">facebook</a>
  </div>
</div>

原因分析

问题出在事件委托的处理逻辑上:

  • 你给.dropdown_parent绑定了点击事件,并且在事件处理中调用了e.preventDefault(),这个方法会阻止当前事件的所有默认行为。
  • 当点击下拉菜单里的<a>标签时,事件会通过冒泡机制传递到父元素.dropdown_parent,触发父元素的事件处理函数,e.preventDefault()会直接阻止<a>标签的跳转默认行为,导致链接无法正常打开。

解决方案

修改JavaScript代码,在执行e.preventDefault()之前,判断点击的目标是不是<a>标签,如果是则跳过阻止默认行为的逻辑:

$(document).ready(function() {
  $('body').on('click', '.dropdown_parent', function(e) {
    // 若点击对象是a标签,直接返回,不执行后续阻止默认行为的代码
    if ($(e.target).is('a')) {
      return;
    }
    
    e.preventDefault();
    e.stopPropagation();
    var getId = $(this).attr("data-id");
    
    if ($('#drop_' + getId).is(":visible")) {
      $('#drop_' + getId).hide();
    } else {
      $('.dropdown_child').hide();
      $('#drop_' + getId).show();
    }
  });
});

这样修改后,点击下拉菜单的触发区域(drop menu ...)仍能正常展开/收起菜单,点击<a>标签时则不会被阻止默认跳转行为,链接可以正常打开。

内容的提问来源于stack exchange,提问作者sami salaam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:53:23