首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同步多个UIKit手风琴

如何同步多个UIKit手风琴
EN

Stack Overflow用户
提问于 2019-03-03 10:23:52
回答 2查看 434关注 0票数 1

我在表行中动态地呈现UIKit手风琴,每个行只包含一个子元素(li)。我如何同步这些手风琴,以便当其中一个打开,其他的崩溃?就像选项multiple: false一样。这是一个Vue应用程序(如果你能提供一个更具体的答案)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-28 10:26:13

这个答案更好,更有表现力。

i是循环的索引。

prevAccordionIndex是在Vue实例数据中定义的,最初设置为null。它用于保存先前(最后)打开手风琴的索引,因此不需要通过$refs循环找到与先前答案一样的打开手风琴。

所有手风琴最初都会倒塌(关闭)。

代码语言:javascript
复制
methods: {
    handleAccordionShow(index) {
        if (this.prevAccordionIndex !== null) {
            this.$uikit.accordion(this.$refs.categoryAccordion[this.prevAccordionIndex]).toggle(0, false)
            this.prevAccordionIndex = index
        } else {
            this.prevAccordionIndex = index
        }
    },
    handleAccordionHide(index) {
        this.prevAccordionIndex = this.prevAccordionIndex === index ? null : index
    }
}
代码语言:javascript
复制
<ul ref="categoryAccordion" @beforeshow="handleAccordionShow(i)" @beforehide="handleAccordionHide(i)" uk-accordion>
  <li>...</li>
</ul>

票数 1
EN

Stack Overflow用户

发布于 2019-03-03 21:11:07

我就是这样解决这个问题的:

i是循环的索引。

代码语言:javascript
复制
toggleAccordion(i) {
  for (let j = 0; j < this.$refs.categoryAccordion.length; j++) {
    if (j === i) {
      continue
    }
    if (this.$refs.categoryAccordion[j].classList.contains('uk-open')) {
      this.uikit.accordion(this.$refs.categoryAccordion[j].parentNode).toggle(0, false)
    }
  }
}
代码语言:javascript
复制
<ul @show="toggleAccordion(i)" uk-accordion>
  <li ref="categoryAccordion">
    ...
  </li>
</ul>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54967832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档