Vue允许在子节点上触发父节点的点击事件

r3i60tvu  于 2023-08-07  发布在  Vue.js
关注(0)|答案(1)|浏览(143)

我有一个由按钮触发的 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)

                }
            }
        },

axkjgtzd

axkjgtzd1#

我想明白了我补充道

pointer-events: none;

字符串
现在一切都好了。

相关问题