vue中实现点击给当前元素添加class(单选);给点击元素添加class(多选)

一、单选情况
比如有一个价格div(这里因为是uniapp所以所有的div都写为view),是v-for循环tags对象中的price数组生成的,price里面有name即价格。点击该元素让当前点击项的class为actived,其他的为空(该元素有默认的class:price-tag)。
代码如下:

<view class="filter-list flex">
	<view v-for="(item,index) in tags.price" :key="index">
		<view ref="price" class="price-tag" :class="currentIndex === index ?'actived':''"
			@click="checkPrice(index)">{{'¥'+item.name}}
		</view>
	</view>
</view>

// 在data里面定义currentIndex默认为0
currentIndex:0, //当前索引
tags:{
   price: [{
		  name: '0~150'
		},
		{
			name: '150~300'
		},
		{
			name: '300~450'
		}]
}

// 在methods中定义checkPrice方法,让currentIndex=index
			checkPrice(index) {
				this.currentIndex = index;
			},

在methods中要想获取当前点击元素的具体价格,通过this.tags.price[this.currentIndex].name即item.name

二、多选情况
比如有一个服务的div(这里因为是uniapp所以所有的div都写为view),是v-for循环tags对象中的serve数组生成的,serve里面有name即服务。点击该元素让所有的点击项的class为actived(该元素有默认的class:price-tag)。
代码如下:

<view class="filter-list flex">
	<view v-for="(item,index) in tags.serve" :key="index">
		<view ref="serve" class="price-tag" :class="{'actived':item.active}" @click="checkServe(index)">{{item.name}}
		</view>
	</view>
</view>
// 在data里面循环的serve
tags:{
  serve:  [{
		name: '可取消',
		active: false
	},
	{
		name: '优选',
		active: false
	},
	{
		name: '可预订',
		active: false
	},]
}

// 在methods中定义checkServe方法,让选中标签的active值取反
			checkServe(index) { // 选中服务筛选标签
				this.tags.serve[index].active =             !this.tags.serve[index].active;
  
  //在methods中要想获取点击元素的具体sever中的name,arr中存的就是所有选中的sever的name值
                  var arr = []; // 定义空数组,接收遍历的值
					this.tags.serve.forEach((item) => {
						if (item.active) { // 筛选active为true的加到arr中
							arr.push(item.name);
						}
					})
  
			},
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 ag-grid-vue 添加单选框并捕获单选点击事件,可以按照以下步骤进行操作: 1. 在列定义添加一个名为`checkboxSelection`的列,以显示单选框。例如: ```javascript { headerName: "Select", checkboxSelection: true, width: 80, suppressMenu: true } ``` 2. 在`gridOptions`设置`rowSelection`属性为`single`,以确保只能选择一个行。例如: ```javascript gridOptions: { rowSelection: 'single' } ``` 3. 在`gridReady`事件处理程序,将选行更改事件添加到`gridApi`对象。例如: ```javascript onGridReady(params) { this.gridApi = params.api; this.gridColumnApi = params.columnApi; this.gridApi.addEventListener('rowSelected', this.onRowSelected.bind(this)); }, onRowSelected(event) { // 处理选行更改事件 } ``` 4. 在`onRowSelected`事件处理程序,可以通过`event.data`属性访问选的行数据。例如: ```javascript onRowSelected(event) { const selectedRowData = event.data; // 处理选行数据 } ``` 5. 如果要在单击单选框时触发事件,可以使用`cellClicked`事件处理程序。例如: ```javascript onCellClicked(event) { if (event.colDef.checkboxSelection) { // 处理单选点击事件 } } ``` 完整示例代码如下: ```javascript <template> <div style="height: 500px" class="ag-theme-alpine"> <ag-grid-vue :columnDefs="columnDefs" :rowData="rowData" :gridOptions="gridOptions" @gridReady="onGridReady" @cellClicked="onCellClicked" ></ag-grid-vue> </div> </template> <script> import { AgGridVue } from 'ag-grid-vue'; export default { components: { AgGridVue, }, data() { return { gridApi: null, gridColumnApi: null, columnDefs: [ { headerName: 'Select', checkboxSelection: true, width: 80, suppressMenu: true, }, { field: 'make' }, { field: 'model' }, { field: 'price' }, ], rowData: [ { make: 'Toyota', model: 'Celica', price: 35000 }, { make: 'Ford', model: 'Mondeo', price: 32000 }, { make: 'Porsche', model: 'Boxter', price: 72000 }, ], gridOptions: { rowSelection: 'single', }, }; }, methods: { onGridReady(params) { this.gridApi = params.api; this.gridColumnApi = params.columnApi; this.gridApi.addEventListener('rowSelected', this.onRowSelected.bind(this)); }, onRowSelected(event) { const selectedRowData = event.data; console.log(selectedRowData); }, onCellClicked(event) { if (event.colDef.checkboxSelection) { console.log('Checkbox clicked'); } }, }, }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值