在 Vue.js 中隐藏 div onclick
Hide div onclick in Vue.js
以下 jQuery 的 Vue.js 等价物是什么?
$('.btn').click(function(){ $('.hideMe').hide() });
这是一个非常基础的 Vue 问题。我建议您阅读指南,即使是第一页也会回答您的问题。
但是,如果您仍然需要答案,这就是您在 Vue 中 hide/show 元素的方式。
new Vue({
el: '#app',
data () {
return {
toggle: true
}
},
})
<script src="https://unpkg.com/vue@2.5.3/dist/vue.js"></script>
<div id="app">
<button @click='toggle = !toggle'> click here </button>
<div v-show='toggle'>showing</div>
</div>
jQuery 开箱即用,Vue.js 则不然。要初始化 Vue.js 组件或应用程序,您必须将该组件及其数据绑定到模板内的一个特定 HTML 标记。
在此示例中,指定元素是 <div id="app"></div>
并通过 el: #app
定位。这你会从 jQuery.
知道
在声明了一些保存切换状态的变量后,在本例中为 isHidden
,初始状态为 false
,必须在 data
对象内声明。
其余的是 Vue-specific 代码,如 v-on:click=""
和 v-if=""
。为了更好地理解,请阅读 Vue.js:
的文档
注意:考虑阅读整个文档或至少阅读文档的较长部分以便更好地理解。
var app = new Vue({
el: '#app',
data: {
isHidden: false
}
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
<div id="app">
<button v-on:click="isHidden = true">Hide the text below</button>
<button v-on:click="isHidden = !isHidden">Toggle hide and show</button>
<h1 v-if="!isHidden">Hide me on click event!</h1>
</div>
<div>
<div>
<button v-on:click="isHidden = !isHidden">Toggle hide and show</button>
<h1 v-if="!isHidden">Hide me on click event!</h1>
</div>
</div>
name: "Modal",
data () {
return {
isHidden: false
}
}
<template>
<button class="btn btn-outline-secondary" type="button"><i class="fas fa-filter" @click="showFilter = !showFilter"></i></button>
</template>
<script>
export default {
methods:{
showFilter() {
eventHub.$emit('show-guest-advanced-filter');
}
}
}
</script>
但是这个方法不行
<template>
<button class="btn btn-outline-secondary" type="button"><i class="fas fa-filter" @click="filtersMethod"></i></button>
</template>
<script>
export default {
data: () => ({
filter: true,
}),
methods: {
showFilter() {
eventHub.$emit('show-guest-advanced-filter');
this.filter = false;
},
hideFilter() {
eventHub.$emit('hide-guest-advanced-filter');
this.filter = true;
},
filtersMethod() {
return this.filter ? this.showFilter() : this.hideFilter();
}
}
}
</script>
这是有效的。
投票赞成的答案绝对是一种方法,但是当我尝试这样做时,它使用的是动态数组而不是单个 Div
,因此单个静态 Vue
变量不会完全削减它。
正如@samayo 提到的,jQuery vs Vue
的隐藏操作没有区别,因此另一种方法是通过 @click
函数触发 jQuery
.
Vue
开发工具包会告诉你不要将 JS 与 @click
事件混合使用,我遇到了与 @user9046370 相同的问题,试图将 jQuery
命令与 @click
,所以无论如何,
这是另一种方法:
<tr v-for="Obj1,index in Array1">
<td >{{index}}</td>
<td >
<a @click="ToggleDiv('THEDiv-'+index)">Show/Hide List</a><BR>
<div style='display:none;' :id="'THEDiv-'+index" >
<ul><li v-for="Obj2 in Array2">{{Obj2}}</li></ul>
</div>
</td>
</tr>
Method:
ToggleDiv: function(txtDivID)
{
$("#"+txtDivID).toggle(400);
},
另一个好处是,如果您想使用花哨的 jQuery
转换,您可以使用此方法。
以下 jQuery 的 Vue.js 等价物是什么?
$('.btn').click(function(){ $('.hideMe').hide() });
这是一个非常基础的 Vue 问题。我建议您阅读指南,即使是第一页也会回答您的问题。
但是,如果您仍然需要答案,这就是您在 Vue 中 hide/show 元素的方式。
new Vue({
el: '#app',
data () {
return {
toggle: true
}
},
})
<script src="https://unpkg.com/vue@2.5.3/dist/vue.js"></script>
<div id="app">
<button @click='toggle = !toggle'> click here </button>
<div v-show='toggle'>showing</div>
</div>
jQuery 开箱即用,Vue.js 则不然。要初始化 Vue.js 组件或应用程序,您必须将该组件及其数据绑定到模板内的一个特定 HTML 标记。
在此示例中,指定元素是 <div id="app"></div>
并通过 el: #app
定位。这你会从 jQuery.
在声明了一些保存切换状态的变量后,在本例中为 isHidden
,初始状态为 false
,必须在 data
对象内声明。
其余的是 Vue-specific 代码,如 v-on:click=""
和 v-if=""
。为了更好地理解,请阅读 Vue.js:
注意:考虑阅读整个文档或至少阅读文档的较长部分以便更好地理解。
var app = new Vue({
el: '#app',
data: {
isHidden: false
}
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
<div id="app">
<button v-on:click="isHidden = true">Hide the text below</button>
<button v-on:click="isHidden = !isHidden">Toggle hide and show</button>
<h1 v-if="!isHidden">Hide me on click event!</h1>
</div>
<div>
<div>
<button v-on:click="isHidden = !isHidden">Toggle hide and show</button>
<h1 v-if="!isHidden">Hide me on click event!</h1>
</div>
</div>
name: "Modal",
data () {
return {
isHidden: false
}
}
<template>
<button class="btn btn-outline-secondary" type="button"><i class="fas fa-filter" @click="showFilter = !showFilter"></i></button>
</template>
<script>
export default {
methods:{
showFilter() {
eventHub.$emit('show-guest-advanced-filter');
}
}
}
</script>
但是这个方法不行
<template>
<button class="btn btn-outline-secondary" type="button"><i class="fas fa-filter" @click="filtersMethod"></i></button>
</template>
<script>
export default {
data: () => ({
filter: true,
}),
methods: {
showFilter() {
eventHub.$emit('show-guest-advanced-filter');
this.filter = false;
},
hideFilter() {
eventHub.$emit('hide-guest-advanced-filter');
this.filter = true;
},
filtersMethod() {
return this.filter ? this.showFilter() : this.hideFilter();
}
}
}
</script>
这是有效的。
投票赞成的答案绝对是一种方法,但是当我尝试这样做时,它使用的是动态数组而不是单个 Div
,因此单个静态 Vue
变量不会完全削减它。
正如@samayo 提到的,jQuery vs Vue
的隐藏操作没有区别,因此另一种方法是通过 @click
函数触发 jQuery
.
Vue
开发工具包会告诉你不要将 JS 与 @click
事件混合使用,我遇到了与 @user9046370 相同的问题,试图将 jQuery
命令与 @click
,所以无论如何,
这是另一种方法:
<tr v-for="Obj1,index in Array1">
<td >{{index}}</td>
<td >
<a @click="ToggleDiv('THEDiv-'+index)">Show/Hide List</a><BR>
<div style='display:none;' :id="'THEDiv-'+index" >
<ul><li v-for="Obj2 in Array2">{{Obj2}}</li></ul>
</div>
</td>
</tr>
Method:
ToggleDiv: function(txtDivID)
{
$("#"+txtDivID).toggle(400);
},
另一个好处是,如果您想使用花哨的 jQuery
转换,您可以使用此方法。