javascript - 单击正文关闭下拉组件

标签 javascript html web-component vue.js

我正在使用 Vue.js,但我认为我使用的是什么库并不重要,只要一个允许您拥有 Web 组件的库即可。无论如何 - 我有一个下拉组件(见下面的代码),我需要知道,如何关闭 body 点击的下拉菜单?如果它是一个有自己范围数据的组件,我假设你不能只向主体添加一个事件监听器,它超出了范围,对吧?我该怎么做?

dropdown.template.html

<li class="dropdown">
    <a href="#" tabindex="1" v-on="click: toggleDropdown($event), keydown: closeDropdown($event) | key 'esc'"><content select=".dropdown__button"></content></a>
</li>

<ul class="dropdown__menu" v-show="displayed">
    <content select=".menu"></content>
</ul>

下拉.js

module.exports = {
  template: require('../views/dropdown.template.html'),

  data: function() {
    return {
      displayed: false
    };
  },

  methods: {
    toggleDropdown: function(e) {
      e.preventDefault();

      this.displayed = !this.displayed;
    },

    closeDropdown: function(e) {
      e.preventDefault();
      e.stopPropagation();

      this.displayed = false;
    }
  }
}

最佳答案

您应该添加 blur 事件:

<a href="#" tabindex="1" v-on="click: toggleDropdown($event), keydown: closeDropdown($event) | key 'esc', blur: closeDropdown($event)"><content select=".dropdown__button"></content></a>

关于javascript - 单击正文关闭下拉组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32448107/

相关文章:

javascript - ASP.NET MVC 将字符串传递给 JSON.parse,并出现引号转义问题

html - 即使使用 z-index,扩展的 div 也会将其他 div 推开

html - Font Awesome 不显示 JSF 应用程序中的所有图标

dialog - 如何在关闭或关闭 Polymer 1.0 的 <paper-dialog> 时执行函数?

web-component - 延迟加载 Web 组件

javascript - 在 Polymer 中列出自定义元素绑定(bind)

javascript - 如何在 ReactJS 中创建动态函数名称并在 onBlur 上使用?

javascript - 使用 img ng-src 显示图像数组不起作用

javascript - 如何在 jQuery 函数中传递数组或添加循环

javascript - 如何将此 html 脚本应用到 jQuery 中?