javascript - 如何使下拉菜单仅在点击外部时关闭?

标签 javascript css reactjs sass

我有多选下拉菜单,问题是当用户选择一项时 - 下拉菜单关闭。

如何使下拉菜单仅在外部点击时关闭?

下拉菜单由 html ul > li 制作:

// Here we loop trough list of filters and render options as <li> tags
 <ul name="filters" className="dropdown">
    {subFilters.map((filter, i) => (
      <li
        defaultChecked={filter.name}
        onClick={() => handleSelect(filter)}
        className={`option`}>
        <span>{filter.name}</span>
      </li>
    ))}
  </ul>

CSS 部分 - 使用的类是:

  • 标签的下拉菜单
  • 选项
.dropdown {
  display: flex;
  flex-direction: column;
  min-width: 11rem;
  position: absolute;
  z-index: 1;
  font-size: 16px;
  border-radius: 3px;
  border: solid 1px #dee1e5;
  box-shadow: 0 9px 8px rgba(0, 0, 0, 0.05);
  background-color: white;
  outline: none;
  cursor: pointer;
}

.option {
  list-style-type: none;
  padding: 10px 10px 10px 0;
  margin-left: 2.6rem;
}

该下拉菜单如下所示: s

最佳答案

您可以通过onBlur来处理这个问题事件。

假设您有这样的片段: <div class="dropdown" onBlur={() => this.handleBlur('myModal')}>Some content</div>

现在this.handleBlur

handleBlur = modalName => {
    this.setState({ [modalName]: false });
};

关于javascript - 如何使下拉菜单仅在点击外部时关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56390611/

相关文章:

JavaScript 原型(prototype)声明

javascript - 通过引用替换 JS 对象 [重构工作代码]

html - CSS Clearfix 不清除 header

reactjs - React hooks 常量的 useMemo 与 useState

javascript - Next.js:匹配根 '/' 和动态路由 '/param' 的页面

javascript - 带 setTimeout 的递归方法

javascript - 在 ios 键盘上使用 Detox 单击 'Search' 和 'Enter' 按钮

java - 如何使用 JSF outputStylesheet 实现 CSS Cache Busting?

html - Z-index 的 IE 不透明度问题

javascript - 在获取期间处理对象返回 'undefined'