remove Ox.each, , $.extend, $.map and $.merge
This commit is contained in:
parent
da9e5dbb29
commit
4cc754a28d
35 changed files with 104 additions and 131 deletions
|
|
@ -58,7 +58,7 @@ Ox.Button = function(options, self) {
|
|||
.mousedown(mousedown)
|
||||
.click(click);
|
||||
|
||||
$.extend(self, Ox.isArray(self.options.title) ? {
|
||||
Ox.extend(self, Ox.isArray(self.options.title) ? {
|
||||
selectedTitle: Ox.setPropertyOnce(self.options.title, 'selected'),
|
||||
titles: self.options.title
|
||||
} : {
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ Ox.ButtonGroup = function(options, self) {
|
|||
self.$buttons[pos].toggleSelected();
|
||||
});
|
||||
that.triggerEvent('change', {
|
||||
selected: $.map(self.optionGroup.selected(), function(v, i) {
|
||||
selected: self.optionGroup.selected().map(function(i) {
|
||||
return self.options.buttons[v].id;
|
||||
})
|
||||
});
|
||||
|
|
|
|||
|
|
@ -34,18 +34,18 @@ Ox.CheckboxGroup = function(options, self) {
|
|||
self.options.max);
|
||||
self.options.checkboxes = self.optionGroup.init();
|
||||
|
||||
$.extend(self, {
|
||||
Ox.extend(self, {
|
||||
$checkboxes: [],
|
||||
checkboxWidth: $.map(Ox.divideInt(
|
||||
checkboxWidth: Ox.divideInt(
|
||||
self.options.width + (self.options.checkboxes.length - 1) * 6,
|
||||
self.options.checkboxes.length
|
||||
), function(v, i) {
|
||||
).map(function(v, i) {
|
||||
return v + (i < self.options.checkboxes.length - 1 ? 10 : 0);
|
||||
})
|
||||
});
|
||||
self.options.checkboxes.forEach(function(checkbox, position) {
|
||||
var id = self.options.id + Ox.toTitleCase(checkbox.id)
|
||||
self.$checkboxes[position] = Ox.Checkbox($.extend(checkbox, {
|
||||
self.$checkboxes[position] = Ox.Checkbox(Ox.extend(checkbox, {
|
||||
group: true,
|
||||
id: id,
|
||||
width: self.checkboxWidth[position]
|
||||
|
|
@ -64,7 +64,7 @@ Ox.CheckboxGroup = function(options, self) {
|
|||
self.$checkboxes[pos].toggleChecked();
|
||||
});
|
||||
that.triggerEvent('change', {
|
||||
checked: $.map(self.optionGroup.checked(), function(v, i) {
|
||||
checked: self.optionGroup.checked().map(function(v) {
|
||||
return self.options.checkboxes[v].id;
|
||||
})
|
||||
});
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ Ox.ColorInput <f:Ox.InputGroup> ColorInput Element
|
|||
@*/
|
||||
Ox.ColorInput = function(options, self) {
|
||||
|
||||
self = $.extend(self || {}, {
|
||||
options: $.extend({
|
||||
self = Ox.extend(self || {}, {
|
||||
options: Ox.extend({
|
||||
id: '',
|
||||
value: '0, 0, 0'
|
||||
}, options)
|
||||
|
|
@ -69,7 +69,7 @@ Ox.ColorInput = function(options, self) {
|
|||
.bindEvent('change', change);
|
||||
|
||||
function change() {
|
||||
self.options.value = $.map(self.$inputs, function(v, i) {
|
||||
self.options.value = self.$inputs.map(function(v) {
|
||||
return v.options('value');
|
||||
}).join(', ');
|
||||
self.$inputs[3].css({
|
||||
|
|
|
|||
|
|
@ -91,10 +91,10 @@ Ox.ColorPicker = function(options, self) {
|
|||
|
||||
function getColors(index) {
|
||||
return [
|
||||
'rgb(' + $.map(Ox.range(3), function(v) {
|
||||
'rgb(' + Ox.range(3).map(function(v) {
|
||||
return v == index ? 0 : self.values[v];
|
||||
}).join(', ') + ')',
|
||||
'rgb(' + $.map(Ox.range(3), function(v) {
|
||||
'rgb(' + Ox.range(3).map(function(v) {
|
||||
return v == index ? 255 : self.values[v];
|
||||
}).join(', ') + ')'
|
||||
];
|
||||
|
|
|
|||
|
|
@ -43,15 +43,11 @@ Ox.DateInput = function(options, self) {
|
|||
weekday: self.options.format == 'long' ? '%A' : '%a',
|
||||
year: '%Y'
|
||||
},
|
||||
months: self.options.format == 'long' ? Ox.MONTHS : $.map(Ox.MONTHS, function(v, i) {
|
||||
return v.substr(0, 3);
|
||||
}),
|
||||
weekdays: self.options.format == 'long' ? Ox.WEEKDAYS : $.map(Ox.WEEKDAYS, function(v, i) {
|
||||
return v.substr(0, 3);
|
||||
})
|
||||
months: self.options.format == 'long' ? Ox.MONTHS : Ox.SHORT_MONTHS,
|
||||
weekdays: self.options.format == 'long' ? Ox.WEEKDAYS : Ox.SHORT_WEEKDAYS
|
||||
});
|
||||
|
||||
self.$input = $.extend(self.options.weekday ? {
|
||||
self.$input = Ox.extend(self.options.weekday ? {
|
||||
weekday: Ox.Input({
|
||||
autocomplete: self.weekdays,
|
||||
autocompleteReplace: true,
|
||||
|
|
@ -78,8 +74,8 @@ Ox.DateInput = function(options, self) {
|
|||
})
|
||||
.bindEvent('autocomplete', changeDay),
|
||||
month: Ox.Input({
|
||||
autocomplete: self.options.format == 'short' ? $.map(Ox.range(1, 13), function(v, i) {
|
||||
return Ox.pad(v, 2);
|
||||
autocomplete: self.options.format == 'short' ? Ox.range(1, 13).map(function(i) {
|
||||
return Ox.pad(i, 2);
|
||||
}) : self.months,
|
||||
autocompleteReplace: true,
|
||||
autocompleteReplaceCorrect: true,
|
||||
|
|
@ -90,8 +86,8 @@ Ox.DateInput = function(options, self) {
|
|||
})
|
||||
.bindEvent('autocomplete', changeMonthOrYear),
|
||||
year: Ox.Input({
|
||||
autocomplete: Ox.merge(Ox.range(1900, 3000), Ox.range(1000, 1900)).map(function(v) {
|
||||
return v.toString();
|
||||
autocomplete: Ox.merge(Ox.range(1900, 3000), Ox.range(1000, 1900)).map(function(i) {
|
||||
return i.toString();
|
||||
}),
|
||||
autocompleteReplace: true,
|
||||
autocompleteReplaceCorrect: true,
|
||||
|
|
@ -146,8 +142,8 @@ Ox.DateInput = function(options, self) {
|
|||
value: Ox.formatDate(new Date([month, day, year].join(' ')), self.formats.weekday)
|
||||
});
|
||||
self.$input.day.options({
|
||||
autocomplete: $.map(Ox.range(1, days + 1), function(v, i) {
|
||||
return self.options.format == 'short' ? Ox.pad(v, 2) : v.toString();
|
||||
autocomplete: Ox.range(1, days + 1).map(function(i) {
|
||||
return self.options.format == 'short' ? Ox.pad(i, 2) : i.toString();
|
||||
}),
|
||||
value: self.options.format == 'short' ? Ox.pad(day, 2) : day.toString()
|
||||
});
|
||||
|
|
@ -163,8 +159,8 @@ Ox.DateInput = function(options, self) {
|
|||
);
|
||||
self.$input.month.options({value: date.month});
|
||||
self.$input.day.options({
|
||||
autocomplete: $.map(Ox.range(1, Ox.getDaysInMonth(date.year, date.month) + 1), function(v, i) {
|
||||
return self.options.format == 'short' ? Ox.pad(v, 2) : v.toString();
|
||||
autocomplete: Ox.range(1, Ox.getDaysInMonth(date.year, date.month) + 1).map(function(i) {
|
||||
return self.options.format == 'short' ? Ox.pad(i, 2) : i.toString();
|
||||
}),
|
||||
value: date.day
|
||||
});
|
||||
|
|
|
|||
|
|
@ -397,7 +397,7 @@ Ox.Filter = function(options, self) {
|
|||
title: key.title
|
||||
};
|
||||
}),
|
||||
//items: $.extend({}, self.options.findKeys), // fixme: Ox.Menu messes with keys
|
||||
//items: Ox.extend({}, self.options.findKeys), // fixme: Ox.Menu messes with keys
|
||||
overlap: 'right',
|
||||
width: 128
|
||||
})
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ Ox.Form = function(options, self) {
|
|||
.options(options || {}) // fixme: the || {} can be done once, in the options function
|
||||
.addClass('OxForm');
|
||||
|
||||
$.extend(self, {
|
||||
Ox.extend(self, {
|
||||
$items: [],
|
||||
$messages: [],
|
||||
formIsValid: false,
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ Ox.FormElementGroup = function(options, self) {
|
|||
};
|
||||
|
||||
that.value = function() {
|
||||
return $.map(self.options.elements, function(element) {
|
||||
return self.options.elements.map(function(element) {
|
||||
var ret = null;
|
||||
['checked', 'selected', 'value'].forEach(function(v) {
|
||||
element[v] && (ret = element[v]());
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ Ox.Input = function(options, self) {
|
|||
)*/
|
||||
)
|
||||
.css({width: self.options.width + 'px'})
|
||||
.bindEvent($.extend(self.options.type == 'textarea' ? {} : {
|
||||
.bindEvent(Ox.extend(self.options.type == 'textarea' ? {} : {
|
||||
key_enter: submit
|
||||
}, {
|
||||
key_control_v: paste,
|
||||
|
|
@ -121,13 +121,13 @@ Ox.Input = function(options, self) {
|
|||
// fixme: validate self.options.value !
|
||||
if (self.options.type == 'float') {
|
||||
self.decimals = Ox.repeat('0', self.options.decimals || 1)
|
||||
$.extend(self.options, {
|
||||
Ox.extend(self.options, {
|
||||
autovalidate: 'float',
|
||||
textAlign: 'right',
|
||||
value: self.options.value || '0.' + self.decimals
|
||||
});
|
||||
} else if (self.options.type == 'int') {
|
||||
$.extend(self.options, {
|
||||
Ox.extend(self.options, {
|
||||
autovalidate: 'int',
|
||||
textAlign: 'right',
|
||||
value: self.options.value || '0'
|
||||
|
|
@ -181,7 +181,7 @@ Ox.Input = function(options, self) {
|
|||
]
|
||||
}
|
||||
|
||||
$.extend(self, {
|
||||
Ox.extend(self, {
|
||||
bindKeyboard: self.options.autocomplete || self.options.autovalidate ||
|
||||
self.options.changeOnKeypress,
|
||||
hasPasswordPlaceholder: self.options.type == 'password' && self.options.placeholder,
|
||||
|
|
@ -207,7 +207,7 @@ Ox.Input = function(options, self) {
|
|||
disabled: self.options.disabled ? 'disabled' : '',
|
||||
type: self.options.type == 'password' ? 'password' : 'text'
|
||||
})
|
||||
.css($.extend({
|
||||
.css(Ox.extend({
|
||||
width: self.inputWidth + 'px',
|
||||
textAlign: self.options.textAlign
|
||||
}, self.options.type == 'textarea' ? {
|
||||
|
|
@ -223,7 +223,7 @@ Ox.Input = function(options, self) {
|
|||
// should at least go into ox.ui.theme.foo.js
|
||||
// probably better: divs in the background
|
||||
if (self.options.type == 'textarea') {
|
||||
$.extend(self, {
|
||||
Ox.extend(self, {
|
||||
colors: Ox.Theme() == 'classic' ?
|
||||
[208, 232, 244] :
|
||||
//[0, 16, 32],
|
||||
|
|
@ -307,8 +307,8 @@ Ox.Input = function(options, self) {
|
|||
|
||||
function autocompleteFunction() {
|
||||
var values = Ox.find(self.options.autocomplete, self.options.value);
|
||||
return self.options.autocompleteReplace ? values[0] :
|
||||
$.merge(values[0], values[1]);
|
||||
return self.options.autocompleteReplace
|
||||
? values[0] : Ox.merge(values[0], values[1]);
|
||||
}
|
||||
|
||||
function autocompleteCallback(values) {
|
||||
|
|
@ -449,7 +449,7 @@ Ox.Input = function(options, self) {
|
|||
|
||||
function autovalidateFunction(value) {
|
||||
var regexp = new RegExp(self.options.autovalidate);
|
||||
return $.map(value.split(''), function(v) {
|
||||
return value.split('').map(function(v) {
|
||||
return regexp.test(v) ? v : null;
|
||||
}).join('');
|
||||
}
|
||||
|
|
@ -546,7 +546,7 @@ Ox.Input = function(options, self) {
|
|||
|
||||
function autovalidateFunction(value) {
|
||||
var length = value.length;
|
||||
return $.map(value.toLowerCase().split(''), function(v, i) {
|
||||
return value.toLowerCase().split('').map(function(v) {
|
||||
if (new RegExp(self.options.autocorrect).test(v)) {
|
||||
return v;
|
||||
} else {
|
||||
|
|
@ -885,6 +885,8 @@ Ox.AutocorrectIntFunction = function(min, max, pad, year) {
|
|||
};
|
||||
};
|
||||
|
||||
// fixme: remove
|
||||
|
||||
Ox.Input_ = function(options, self) {
|
||||
|
||||
/*
|
||||
|
|
@ -953,7 +955,7 @@ Ox.Input_ = function(options, self) {
|
|||
width: self.options.width + 'px'
|
||||
});
|
||||
|
||||
$.extend(self, {
|
||||
Ox.extend(self, {
|
||||
clearWidth: 16,
|
||||
hasMultipleKeys: Ox.isArray(self.options.label) && 'label' in self.options.label[0],
|
||||
hasMultipleValues: Ox.isArray(self.options.value) &&
|
||||
|
|
@ -977,7 +979,7 @@ Ox.Input_ = function(options, self) {
|
|||
});
|
||||
|
||||
if (self.keyName && !self.hasMultipleKeys) {
|
||||
self.options[self.keyName] = [$.extend({
|
||||
self.options[self.keyName] = [Ox.extend({
|
||||
id: '',
|
||||
label: self.options[self.keyName],
|
||||
}, self.keyName == 'label' ? {
|
||||
|
|
@ -1027,7 +1029,7 @@ Ox.Input_ = function(options, self) {
|
|||
width: self.valueWidth
|
||||
}];
|
||||
} else if (self.options.type == 'range') {
|
||||
self.options.value = [$.extend({
|
||||
self.options.value = [Ox.extend({
|
||||
id: '',
|
||||
size: self.valueWidth
|
||||
}, self.options.value)];
|
||||
|
|
@ -1231,7 +1233,7 @@ Ox.Input_ = function(options, self) {
|
|||
});
|
||||
}
|
||||
that.$input[i]
|
||||
.css($.extend({}, self.options.value.length > 1 ? {
|
||||
.css(Ox.extend({}, self.options.value.length > 1 ? {
|
||||
float: 'left',
|
||||
marginLeft: -Ox.sum($.map(self.options.value, function(v_, i_) {
|
||||
return i_ > i ? self.options.value[i_ - 1].width + self.options.separatorWidth[i_ - 1] : (i_ == i ? 16 : 0);
|
||||
|
|
@ -1411,7 +1413,7 @@ Ox.InputElement_ = function(options, self) {
|
|||
that.bindEvent('click_' + self.autosuggestId, clickMenu);
|
||||
}
|
||||
|
||||
that.bindEvent($.extend(self.options.type == 'textarea' ? {} : {
|
||||
that.bindEvent(Ox.extend(self.options.type == 'textarea' ? {} : {
|
||||
key_enter: submit
|
||||
}, {
|
||||
key_escape: cancel
|
||||
|
|
@ -1488,7 +1490,7 @@ Ox.InputElement_ = function(options, self) {
|
|||
index > -1 && values[index == 0 ? 0 : 1].push(v);
|
||||
});
|
||||
}
|
||||
return $.merge(values[0], values[1]);
|
||||
return Ox.merge(values[0], values[1]);
|
||||
}
|
||||
|
||||
function autosuggestCall() {
|
||||
|
|
@ -1555,7 +1557,7 @@ Ox.InputElement_ = function(options, self) {
|
|||
function autovalidateCallback(data, blur) {
|
||||
if (data.valid != self.valid) {
|
||||
self.valid = data.valid;
|
||||
that.triggerEvent('validate', $.extend(data, {
|
||||
that.triggerEvent('validate', Ox.extend(data, {
|
||||
blur: blur
|
||||
}));
|
||||
}
|
||||
|
|
@ -1693,7 +1695,7 @@ Ox.Range_ = function(options, self) {
|
|||
value: 0,
|
||||
valueNames: null
|
||||
})
|
||||
.options($.extend(options, {
|
||||
.options(Ox.extend(options, {
|
||||
arrowStep: options.arrowStep ?
|
||||
options.arrowStep : options.step,
|
||||
trackImages: $.makeArray(options.trackImages || [])
|
||||
|
|
|
|||
|
|
@ -35,10 +35,7 @@ Ox.InputGroup = function(options, self) {
|
|||
width: self.options.width + 'px'
|
||||
});
|
||||
|
||||
$.extend(self, {
|
||||
//$input: [],
|
||||
$separator: []
|
||||
});
|
||||
self.$separator = [];
|
||||
|
||||
self.options.separators.forEach(function(v, i) {
|
||||
self.options.id == 'debug' && Ox.print('separator #' + i + ' ' + self.options.inputs[i].options('id') + ' ' + self.options.inputs[i].options('width'))
|
||||
|
|
@ -60,7 +57,7 @@ Ox.InputGroup = function(options, self) {
|
|||
parent: that
|
||||
})
|
||||
.css({
|
||||
marginLeft: -Ox.sum($.map(self.options.inputs, function(v_, i_) {
|
||||
marginLeft: -Ox.sum(self.options.inputs.map(function(v_, i_) {
|
||||
return i_ > i ? self.options.inputs[i_ - 1].options('width') +
|
||||
self.options.separators[i_ - 1].width : (i_ == i ? 16 : 0);
|
||||
})) + 'px'
|
||||
|
|
@ -129,7 +126,7 @@ Ox.InputGroup = function(options, self) {
|
|||
};
|
||||
|
||||
that.value = function() {
|
||||
return $.map(self.options.inputs, function(input) {
|
||||
return self.options.inputs.map(function(input) {
|
||||
var ret = null;
|
||||
['checked', 'selected', 'value'].forEach(function(v) {
|
||||
input[v] && (ret = input[v]());
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ Ox.Label = function(options, self) {
|
|||
(self.options.overlap != 'none' ?
|
||||
' OxOverlap' + Ox.toTitleCase(self.options.overlap) : '')
|
||||
)
|
||||
.css($.extend(self.options.width == 'auto' ? {} : {
|
||||
.css(Ox.extend(self.options.width == 'auto' ? {} : {
|
||||
width: self.options.width - 14 + 'px' // fixme: why 14????
|
||||
}, {
|
||||
textAlign: self.options.textAlign
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@ Ox.OptionGroup = function(items, min, max, property) {
|
|||
function getLastBefore(pos) {
|
||||
// returns the position of the last checked item before position pos
|
||||
var last = -1;
|
||||
/*Ox.print(items, items.length, length, $.merge(
|
||||
/*Ox.print(items, items.length, length, Ox.merge(
|
||||
pos > 0 ? Ox.range(pos - 1, -1, -1) : [],
|
||||
pos < items.length - 1 ? Ox.range(items.length - 1, pos, -1) : []
|
||||
))*/
|
||||
// fixme: why is length not == items.length here?
|
||||
Ox.forEach($.merge(
|
||||
Ox.forEach(Ox.merge(
|
||||
pos > 0 ? Ox.range(pos - 1, -1, -1) : [],
|
||||
pos < items.length - 1 ? Ox.range(items.length - 1, pos, -1) : []
|
||||
), function(v) {
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ Ox.PlaceInput <f:Ox.FormElementGroup> PlaceInput Object
|
|||
Ox.PlaceInput = function(options, self) {
|
||||
|
||||
var that;
|
||||
self = $.extend(self || {}, {
|
||||
options: $.extend({
|
||||
self = Ox.extend(self || {}, {
|
||||
options: Ox.extend({
|
||||
id: '',
|
||||
value: 'United States'
|
||||
}, options)
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ Ox.PlacePicker <f:Ox.Element> PlacePicker Object
|
|||
Ox.PlacePicker = function(options, self) {
|
||||
|
||||
var that;
|
||||
self = $.extend(self || {}, {
|
||||
options: $.extend({
|
||||
self = Ox.extend(self || {}, {
|
||||
options: Ox.extend({
|
||||
id: '',
|
||||
value: 'United States'
|
||||
}, options)
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ Ox.Range = function(options, self) {
|
|||
value: 0,
|
||||
valueNames: null,
|
||||
})
|
||||
.options($.extend(options, {
|
||||
.options(Ox.extend(options, {
|
||||
arrowStep: options.arrowStep ?
|
||||
options.arrowStep : options.step,
|
||||
trackImages: $.makeArray(options.trackImages || [])
|
||||
|
|
@ -55,7 +55,7 @@ Ox.Range = function(options, self) {
|
|||
width: self.options.size + 'px'
|
||||
});
|
||||
|
||||
$.extend(self, {
|
||||
Ox.extend(self, {
|
||||
trackColors: self.options.trackColors.length,
|
||||
trackImages: self.options.trackImages.length,
|
||||
values: (self.options.max - self.options.min + self.options.step) /
|
||||
|
|
@ -86,7 +86,7 @@ Ox.Range = function(options, self) {
|
|||
|
||||
self.$track = Ox.Element()
|
||||
.addClass('OxTrack')
|
||||
.css($.extend({
|
||||
.css(Ox.extend({
|
||||
width: (self.trackSize - 2) + 'px'
|
||||
}, self.trackImages == 1 ? {
|
||||
background: 'rgb(0, 0, 0)'
|
||||
|
|
@ -224,11 +224,11 @@ Ox.Range = function(options, self) {
|
|||
self.$track.css({
|
||||
backgroundImage: $.browser.mozilla ?
|
||||
('-moz-linear-gradient(left, ' +
|
||||
self.options.trackColors[0] + ' 0%, ' + $.map(self.options.trackColors, function(v, i) {
|
||||
self.options.trackColors[0] + ' 0%, ' + self.options.trackColors.map(function(v, i) {
|
||||
return v + ' ' + ((self.trackColorsStart + self.trackColorsStep * i) * 100) + '%';
|
||||
}).join(', ') + ', ' + self.options.trackColors[self.trackColors - 1] + ' 100%)') :
|
||||
('-webkit-gradient(linear, left top, right top, color-stop(0, ' +
|
||||
self.options.trackColors[0] + '), ' + $.map(self.options.trackColors, function(v, i) {
|
||||
self.options.trackColors[0] + '), ' + self.options.trackColors.map(function(v, i) {
|
||||
return 'color-stop(' + (self.trackColorsStart + self.trackColorsStep * i) + ', ' + v + ')';
|
||||
}).join(', ') + ', color-stop(1, ' + self.options.trackColors[self.trackColors - 1] + '))')
|
||||
});
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ Ox.Select = function(options, self) {
|
|||
|
||||
//Ox.print('Ox.Select', self.options);
|
||||
|
||||
$.extend(self, {
|
||||
Ox.extend(self, {
|
||||
buttonId: self.options.id + 'Button',
|
||||
groupId: self.options.id + 'Group',
|
||||
menuId: self.options.id + 'Menu'
|
||||
|
|
@ -180,7 +180,7 @@ Ox.Select = function(options, self) {
|
|||
() -> <o> returns object of selected items with id, title
|
||||
@*/
|
||||
that.selected = function() {
|
||||
return $.map(/*self.checked*/self.optionGroup.checked(), function(v) {
|
||||
return /*self.checked*/self.optionGroup.checked().map(function(v) {
|
||||
return {
|
||||
id: self.options.items[v].id,
|
||||
title: self.options.items[v].title
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue