我想收集所有被选中和未被选中的元素。
dom 元素由几个multiple select
.
他们每个人都有相同的用户。
我的目标是创建所有用户的集合,并为选定的用户添加具有特定值的属性。
这是我的代码 js 代码 (1),这里是链接http://jsfiddle.net/vxRtb/9/。
我的代码可以工作,但我想干掉代码,因为可能不需要在第一次选择时跳过所有用户。
任何提示如何干燥以下 js 代码?
请阅读关于 js 代码的评论以获取更多信息;谢谢
PS:
1)我正在使用jQuery
和underscore
2)我从服务器获取 html 代码,与 jsfiddle.net/vxRtb/9 中的相同
$(function () {
var $selectElements = $('form .controls select');
var userCollection = [];
// Subroutine_1
// TODO Subroutine_1 and Subroutine_2 seems too close; any idea how to dry this code?
$.each($($selectElements[0]), function (i, teamElement) {
var $users = $(teamElement).find('option')
$.each($users, function (i, user) {
userCollection.push({
id: $(user).val(),
name: $(user).text(),
});
});
});
// Subroutine_2
$.each($selectElements, function (i, teamElement) {
var $teamElement = $(teamElement);
//var teamId = $teamElement.attr('id');
var teamName = $teamElement
.parent().parent().closest('.controls')
.find('input').val();
var $users = $teamElement.find('option:selected');
$.each($users, function (i, user) {
_.where(userCollection, {id: $(user).val()})[0].team = teamName;
});
});
console.log(userCollection);
});