jQuery在排序后选择了一个选项

时间:2017-08-22 08:31:37

标签: javascript jquery html sorting

大家好我选择一个选项时遇到问题。

我有这个,我排序,没关系,但问题是所选项目是最后一个选项,我想选择所选项目,但如何?我无法选择选项值因为我生成动态选项:

$('#MySelect').html($('#MySelect option').sort(function (a, b) { return a.text == b.text ? 0 : a.text < b.text ? -1 : 1;}));

// I tried this ?
$('#MySelect option:selected').prop('selected', true);
<select id="MySelect">
  <option value="D">D</option>
  <option value="B">B</option>
  <option value="A" selected>A</option>
  <option value="C">C</option>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我想选择没有值的所选项目,但只能感谢“已选择”
谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

在使用.sort()之前获取所选值,然后使用$('#MySelect').val(t);再次设置选择。 (t =选定值)

var t = $('#MySelect option:selected').val();

$('#MySelect').html($('#MySelect option').sort(function(a, b) {
  return a.text == b.text ? 0 : a.text < b.text ? -1 : 1;
}))

$('#MySelect').val(t);

以下示例

var t = $('#MySelect option:selected').val();

$('#MySelect').html($('#MySelect option').sort(function(a, b) {
  return a.text == b.text ? 0 : a.text < b.text ? -1 : 1;
}))

$('#MySelect').val(t);
<select id="MySelect">
  <option value="D">D</option>
  <option value="B">B</option>
  <option value="A" selected>A</option>
  <option value="C">C</option>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:0)

在排序之前获取所选选项参考,然后使用prop()方法选择它。

// get the selected option and cache it for later use
var $opt = $('#MySelect option:selected');

// sort the options
$('#MySelect').html($('#MySelect option').sort(function(a, b) {
  return a.text == b.text ? 0 : a.text < b.text ? -1 : 1;
  // or use
  // return a.text.localeCompare(b.text);
}));

// set the selected property to the calched option
$opt.prop('selected', true);
<select id="MySelect">
  <option value="D">D</option>
  <option value="B">B</option>
  <option value="A" selected>A</option>
  <option value="C">C</option>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>