jq,vue动态选中checkbox和radio

本文详细介绍了如何使用jQuery和Vue.js分别控制页面上的单选框和复选框。包括通过标签名、类名和ID选择元素,并在Vue动态渲染的数据环境中实现相同功能。此外,还提供了在Vue中使用v-model绑定数据来控制单选和复选框状态的方法。

jq选中单选框、复选框

  • 2019-03-28
    遇到了一个checkbox和radio选中的问题,有一个不好用jq控制选中,但是具体出现的问题忘记了,先存个档,以后再补充。

html:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<div class="box_radio">
			<input type="radio" class="radio" name="radio" id="radio1" />
			<input type="radio" class="radio" name="radio" id="radio2" />
			<input type="radio" class="radio" name="radio" id="radio3" />
		</div>
		<div class="box_checkbox">
			<input type="checkbox" class="checkbox" name="checkbox" id="checkbox1" />
			<input type="checkbox" class="checkbox" name="checkbox" id="checkbox2" />
			<input type="checkbox" class="checkbox" name="checkbox" id="checkbox3" />
		</div>
	</body>
</html>

js中三种方法都可以选中元素:
(1)标签名

	$("input[type=radio]").eq(0).attr("checked","checked");
	$("input[type=checkbox]").eq(0).attr("checked","checked");

(2)class名

	$(".radio").eq(1).attr("checked","checked");
	$(".checkbox").eq(1).attr("checked","checked");

(3)id

	$("#radio3").attr("checked","checked");
	$("#checkbox3").attr("checked","checked");

vue动态渲染的数据,选中单选框、复选框

  • 2019-04-11 补充
    回想起来之前的问题是同时使用了vue和jq出现的,然后先复现一下当时的问题
<div id="main">
	<form>
		<div class="box_radio">
			<input v-for="(item,index) in list1" :value="item.name" type="radio" class="radio" name="radio" :id="_radio(index)" />
		</div>
		<div class="box_checkbox">
			<input v-for="(item,index) in list2" :value="item.name" type="checkbox" class="checkbox" name="checkbox" :id="_checkbox(index)" />
		</div>
	</form>
</div>

vue结构:

var vm = new Vue({
	el:"#main",
	data:{
		list1: [
			{name: '111'},
			{name : '222'},
			{name : '333'},
		],
		list2: [
			{name : '111'},
			{name : '222'},
			{name : '333'},
		]
	},
	methods: {
		_checkbox: function(i){
			return "checkbox"+(i+1);
		},
		_radio: function(i){
			return "radio"+(i+1);
		}
	}
})

固定的vue的数据问题不大,仍然可以通过之前的方法使用jq选中想要的元素。
但是大部分情况是在接口或者别的方法中传递的动态数据,用之前的方法就没办法选中了,模拟一下:


var vm = new Vue({
	el:"#main",
	data:{
		list1: [],
		list2: []
	},
	methods: {
		_checkbox: function(i){
			return "checkbox"+(i+1);
		},
		_radio: function(i){
			return "radio"+(i+1);
		}
	}
})
$(function(){
	vm.list1 = [
		{name : '111'},
		{name : '222'},
		{name : '333'},
	];
	vm.list2 = [
		{name : '111'},
		{name : '222'},
		{name : '333'},
	]
	
	$("input[type=radio]").eq(0).attr("checked","checked");			//这里使用jq就没办法选中了
	$("input[type=checkbox]").eq(0).attr("checked","checked");
})

vue中使用这种办法解决:

	<input v-for="(item,index) in list1" :value="item.name" type="radio" v-model="param" name="radio" />
	<input v-for="(item,index) in list2" :value="item.name" type="checkbox" v-model="param2" />

v-model绑定vm中的数据,值对应value

	vm.param = '111';

修改param来选中单选框或复选框,不管是固定值 还是动态修改都可以生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值