我有一个由按钮触发的 accordion 元素。在按钮里面我有一些文本和一个带+的span。当单击按钮上的文本时,我的 accordion 按预期切换,但当用+单击span时,我得到一个错误, accordion 没有切换。添加stop.prevent可以帮助解决js错误,但是当点击加号时什么也没有发生,这是我需要它做的。
我的问题是,我如何才能允许 accordion 切换相应的,无论在按钮内,我点击?
相关代码:
<ul class="accordion js-accordion">
@{int i = 0;}
@foreach (var item in Model.FaqEntries)
{
<li @(i == 0 && Model.ExpandFirstItem ? "data-open='true'" : "") id="@item.Name">
<button type="button" v-on:click="handleToggleClick" v-on:keydown.enter="handleToggleClick">
@item.Title
<span v-on:click.stop.prevent>+</span>
</button>
<div class="rich-text">@Html.Raw(@item.Content)</div>
</li>
i++;
}
</ul>
字符串
VUE
handleToggleClick: function (event) {
if ((this.isMobileOnly && breakpoint() !== "large") || !this.isMobileOnly) {
const btn = event.target;
const content = btn.nextElementSibling;
const parent = btn.parentElement;
// If the accordion title is a link or header, don't open/close the accordion item
if (btn.tagName === "A") {
return;
}
if (parent.classList.contains(this.toggleClass)) {
this.closeItem(btn, content, parent);
} else {
// Close all other open accordion items
Array.from(this.$el.querySelectorAll(`.${this.toggleClass}`)).map(item => {
this.closeItem(item.querySelector(".accordion__header"), item.querySelector(".accordion__content"), item);
});
this.openItem(btn, content, parent)
setTimeout(() => { scrollToElement(btn) }, this.animationDuration + 1)
}
}
},
型
1条答案
按热度按时间axkjgtzd1#
我想明白了我补充道
字符串
现在一切都好了。