如何在多选输入框中获取选中项的team-id值并存入selectedTeams数组
我来帮你捋捋这个问题哈,先看看你写的GetSelectedTeams函数里的小问题,再给你修正方案,最后说下怎么获取多选框的类属性值~
修正多选框选中团队ID的逻辑
你的原函数有两个容易踩坑的地方:
$('input:checked').attr('team-id')只能拿到第一个选中元素的team-id,如果勾了多个选项,后面的直接被忽略了,得用.each()遍历所有选中的元素才行。- 循环里的
if (i == selected)逻辑不对——i是teams数组的索引,而selected是team-id的属性值,两者根本不是一回事,应该用团队数据里的team-id去匹配选中的ID。
下面是修正后的函数,两种存储逻辑都给你写了,看你需求选:
GetSelectedTeams: function () { var self = this; // 先清空已选数组,避免重复数据残留 self.selectedTeams = []; // 遍历所有被勾选的多选框 $('input:checked').each(function() { var checkedTeamId = $(this).attr('team-id'); // 匹配teams数组里对应的团队 for (var i = 0; i < self.teams.length; i++) { // 假设teams里的每个对象有teamId属性(和多选框的team-id对应) if (self.teams[i].teamId == checkedTeamId) { // 需求1:如果selectedTeams是存选中的team-id值数组 self.selectedTeams.push(checkedTeamId); // 需求2:如果selectedTeams是和teams索引对应的布尔值数组(标记该位置是否选中) // self.selectedTeams[i] = true; break; // 找到对应项就跳出循环,省点性能 } } }); var selectedCount = $('input:checked').length; console.log('选中的团队ID列表:', self.selectedTeams); console.log('一共选中了', selectedCount, '个团队'); }
另外提个小建议:HTML里的自定义属性建议用data-*规范,比如把team-id改成data-team-id,这样用$(this).data('team-id')获取更标准,也不会和原生属性冲突~
怎么获取多选框的类属性值
如果是要获取选中元素的类相关属性,分两种情况:
- 获取元素的class属性值:用
$(this).attr('class'),返回的是字符串,比如"checkbox-team active" - 获取自定义的类相关属性(比如你自己加的
data-class-type这类):用$(this).data('class-type')(自动转类型)或者$(this).attr('data-class-type')(返回原始字符串)
举个实际例子,遍历选中元素获取这些属性:
$('input:checked').each(function() { // 获取元素的class属性 var elementClass = $(this).attr('class'); // 获取自定义的data-class属性 var customClassAttr = $(this).data('class'); // 对应HTML里的data-class="xxx" console.log('当前选中元素的class:', elementClass); console.log('自定义类属性值:', customClassAttr); });
内容的提问来源于stack exchange,提问作者Paolo Frigenti
相关产品推荐
相关产品推荐

