@click 事件不会与带有@blur 的元素一起触发

@click event not triggering alongside element with @blur

我在使用 VueJS 时遇到了一个问题,这有点让我神经衰弱,因为我知道它可能依赖于一些非常小的东西,但我仍然在这里试图得到它 运行 几个小时.

我正在使用一个模板,该模板应该代表一个搜索栏,其下有解决方案。为了展示解决方案,我在一个对象上循环(我还没有完成包括过滤到那个点的解决方案 - 想先完成这个)。我现在想做的是用解决方案中的值 I select 填充搜索栏值(通过单击事件传递它)。但是不知何故我的点击事件没有触发。

我有以下代码片段:

<template>
    <div class="input-group">
        <div class="input-group-prepend">
            <div class="input-group-text">&#128269;</div>
        </div>
        <input 
            type="text" 
            class="form-control"
            @focus="searchFocus = true"
            @blur="searchFocus = false"
            v-model="searchQuery"
            placeholder="Search for vehicles..">
        <div class="container p-0">
            <div class="dropdown-menu search" v-show="searchFocus">
                <a class="dropdown-item bus" href="#" 
                    v-for="vehicle in vehicleObjects" 
                    :key="vehicle.id.key"
                    v-on:click="setSelectedToQuery(vehicle)">
                    <span class="ml-4">Bus {{ vehicle.id.name }}
                        <span class="badge badge-secondary"> {{ vehicle.licenseNumber }}</span>
                    <span>
                </a>
            </div> 
        </div>
    </div>
</template>

我是不是漏掉了一些很明显的东西?如何获取点击事件 running/triggering?

提前致谢

此致

也许这是解决方案:关闭最后一个跨度

点击为我工作:https://codesandbox.io/s/morning-browser-fgftf

东西很少"off"我会按影响程度列出它们

  • @blur 在点击之前触发,本质上使 @click
  • 无效
  • <a ...> 需要防止重定向。您可以使用 @click.prevent="... 来防止事件传播,或者使用其他元素,因为您还没有定义 href
  • 你的一个 span 元素没有关闭(最后是 <span> 而不是 </span

要处理 @blur 阻塞 @click,您可以使用 @mousedown 而不是 @click,因为它先执行。