var $rows = $('select:selected');
不起作用,如果选择了多个选项,这会给我同一个选择框的多个实例: var $rows = $('select option:selected');
var $rows = $('select option:selected');
$rows.each(function() {
console.log($(this).closest('select').attr('id')); // should only return 1 and 2, not 2 twice
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="1" multiple>
<option value="1" selected="selected">1</option>
<option value="2">2</option>
</select>
<select id="2" multiple>
<option value="1" selected="selected">1</option>
<option value="2" selected="selected">2</option>
</select>
<select id="3" multiple>
<option value="1">1</option>
<option value="2">2</option>
</select>
发布于 2019-04-16 09:00:15
这是一个解决您的问题的vanilla javascript解决方案:
var selects = Array.from(document.querySelectorAll('select'));
selects.forEach(select => {
let selectedItems = Array.from(select.children).reduce((acc, opt) => {
if (opt.selected) {
acc.push(opt.value);
}
return acc;
}, []);
console.log(selectedItems);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="1" multiple>
<option value="1" selected="selected">1</option>
<option value="2">2</option>
</select>
<select id="2" multiple>
<option value="1" selected="selected">1</option>
<option value="2" selected="selected">2</option>
</select>
<select id="3" multiple>
<option value="1">1</option>
<option value="2">2</option>
</select>
https://stackoverflow.com/questions/-100006600
复制相似问题