【问题标题】:Toggle class on click directive?在点击指令上切换类?
【发布时间】:2018-10-04 21:16:36
【问题描述】:

有没有办法在单击元素时使用指令添加和删除类?

我想避免将元素放入模板中,而只使用指令。

比如:

<div v-toggle-class></div>

然后这将切换一个预定义的类,如.active

【问题讨论】:

    标签: vue.js vuejs2 vue-directives


    【解决方案1】:

    您可以使用custom directive 并附加到那里的点击事件(在bind 挂钩中)。

    编辑:修改为使用元素数据上下文来存储类活动标志

    只是一个简单的例子:

    Vue.directive("toggle-active", {
      bind: function(el, binding, vnode) {
        el.addEventListener(
          "click",
          () => {
            let active = vnode.context.class_active;
            active = !active;
            vnode.context.class_active = active;
            if (!active) {
              el.classList.remove("active");
              el.classList.add("not-active");
            } else {
              el.classList.remove("not-active");
              el.classList.add("active");
            }
          },
          false
        );
      }
    });
    

    【讨论】:

    • 您能举个例子吗?像这样的东西? el.addEventListener('click', () => {el.classList.toggle('my-style')});
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2016-11-09
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    相关资源
    最近更新 更多