Вот пример того, как:
- Получить все значения из
<select>
, разделенные запятыми. - Добавить
<option>
с новым значением, называемым "ALL".".
$('.makeAll').each(function() {
$select = $(this);
var values = $('option', $select).map(function() {
return this.value;
}).toArray().join(',');
$('<option>', {
'value': values,
'text': 'ALL'
}).prependTo($select);
});
// For demo; output the selected value.
$('select').on('change', function() {
console.log(this.value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="makeAll">
<option value="US">United States</option>
<option value="UK">United Kingdom</option>
<option value="DE">Germany</option>
</select>
<select class="makeAll">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
EDIT
Обратите внимание, что значения с запятыми будут считаться несколькими значениями, поскольку разделители одинаковы.Например:
<option value="1,2,3,4">
Я использовал переменную для разделителя, чтобы ее можно было легко изменить при необходимости:
var delim = '#';
$('.makeAll').each(function() {
var $select = $(this);
var values = $('option', $select).map(function() {
return this.value;
}).toArray().join(delim);
$('<option>', {
'value': values,
'text': 'ALL'
}).prependTo($select);
});
// For demo; output the selected value(s).
$('select').on('change', function() {
console.log(this.value.split(delim));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="makeAll">
<option value="1,2,3,4">Sample</option>
<option value="spin">Funnel</option>
<option value="4,22(n,s)">Igloo</option>
</select>
<select class="makeAll">
<option value="1-2-3-4">Result</option>
<option value="spin;watch">Crystal</option>
<option value="4,22(n-s)">Curtain</option>
</select>