我需要一种方法来触发<select>
或<b-form-select>
,并在鼠标悬停上显示下拉选项列表。不使用JQuery或Vue.js以外的任何外部插件。
发布于 2022-04-27 08:32:21
根据我的理解,您希望显示/隐藏<b-form-select>
on mouseover
和mouseleave
事件。如果是的话,我几乎没有什么建议,
mouseover
和mouseleave
事件。我们可以直接通过在鼠标本身附加native
来触发鼠标事件,但是一旦它隐藏起来,就没有办法让下拉列表再次回到鼠标上。v-show
指令简单地显示/隐藏下拉列表。我们可以轻松地设置鼠标事件的值。工作演示:
new Vue({
el: '#app',
data() {
return {
selected: null,
isVisible: true,
options: [
{ value: null, text: 'Please select an option' },
{ value: 'a', text: 'This is First option' },
{ value: 'b', text: 'Selected Option' },
{ value: { C: '3PO' }, text: 'This is an option with object value' },
{ value: 'd', text: 'This one is disabled', disabled: true }
]
}
},
methods: {
onOver() {
this.isVisible = true;
},
onLeave() {
this.isVisible = false;
}
}
})
.wrapper-div {
height: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/bootstrap-vue@2.22.0/dist/bootstrap-vue.js"></script>
<link rel="stylesheet" href="https://unpkg.com/bootstrap-vue@2.22.0/dist/bootstrap-vue.css"/>
<div id="app">
<div class="wrapper-div" @mouseover="onOver" @mouseleave="onLeave">
<b-form-select
v-model="selected"
:options="options"
v-show="isVisible">
</b-form-select>
</div>
</div>
发布于 2022-04-26 20:43:09
此解决方案的效果类似于通过单击选择打开它(虽然,不是相同的.)
<template>
<select ref="mySelect" @mouseenter="hover(true)" @mouseleave="hover(false)" :size="size">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
</select>
</template>
<script>
import {ref} from 'vue';
export default {
name: "Test",
setup(){
const mySelect = ref();
const size = ref('0');
return {mySelect, size}
},
methods: {
hover(val) {
this.size = val ? this.mySelect.length.toFixed(0) : '0';
}
}
}
</script>
https://stackoverflow.com/questions/70831163
复制相似问题