最も簡単な方法は、コンポーネントを使用するので、v-show
に取り付けられたフラグを設定し、タイムアウトを使用して取り付けられたフックにイベントリスナーを追加することである:DIV上今たびにマウスの動きを
Vue.component('my-deiv', {
template: `<template id="block"><div v-show="show">A div</div></template>`,
mounted(){
this.$el.addEventListener('mousemove',() => {
setTimeout(() => {
this.show = false;
}, 3000)
})
},
data(){
return{
show: true
}
}
});
それはここで、タイムアウトを発射JSFiddleです:あなたはマウスがあるときdiv
を非表示にする場合https://jsfiddle.net/nb80sn52/
EDIT
一定の時間のためにそれに移動していない - しかし、マウスの終了は、その後、あなたがタイムアウトするたびに再起動することができないときにマウスの葉、ここで更新されたバージョンだときに、マウスの移動とは完全にそれを取り消す:
Vue.component('block', {
template: "#block",
mounted() {
this.timer = null;
this.$el.addEventListener('mousemove',() => {
clearTimeout(this.timer);
this.timer = setTimeout(() => {
this.show = false;
}, 3000)
})
this.$el.addEventListener('mouseleave',() => {
clearTimeout(this.timer);
})
},
data() {
return {
show: true
}
}
})
そしてJSFiddleのために:https://jsfiddle.net/utaaatjj/
ああ、これは私が使用するために探しているだろう、ありがとう! 私は、マウスがdiv上に乗っていないかどうかを確認することは可能でしょうか?私はmouseleaveなどを確認することができますが、私は問題のdivが一定量の時間以上にぶら下がっていないことを見ることができる必要があることを知っています。 –
@ akre_11あなたは変数にタイムアウトを保存し、マウス入力時にタイムアウトをリセット/キャンセルすることができます。 –
感謝の男!それは私が今行っているものですが、私はclearTimeout();を使用して問題を抱えています。 mouseoverで 'v-on:mouseover =" clearTimeout(this.timer) 'を実行しようとしています。ここで' timer'はタイムアウトを保存したvarですが、クリアしたくないようです。 –