Jquery 在选定的选择中恢复预先选定的值

Jquery 在选定的选择中恢复预先选定的值,jquery,jquery-chosen,Jquery,Jquery Chosen,在所附的小提琴中,我有两个选项,当选择的选择加载时,预先填充“丹麦”和“法国”。如果我在“选择”框中选择更多值并单击“清除”按钮,我希望使用相同的预填充值“丹麦”和“法国”恢复所选的选择 我想将此代码更改为预先填充选定的值 $("#Clear").click(function () { $('.chosen-select option').prop('selected', false).trigger('chosen:updated'); }); 更新: 如果有这样一种方法,即预先填

在所附的小提琴中,我有两个选项,当选择的选择加载时,预先填充“丹麦”和“法国”。如果我在“选择”框中选择更多值并单击“清除”按钮,我希望使用相同的预填充值“丹麦”和“法国”恢复所选的选择

我想将此代码更改为预先填充选定的值

$("#Clear").click(function () {
    $('.chosen-select option').prop('selected', false).trigger('chosen:updated');
});

更新:
如果有这样一种方法,即预先填充哪些选项并不重要,但它们应该被恢复(如果有)。

您需要的是创建一个预先选择的选项值数组。然后,您可以在此数组中使用
forEach
循环来更改
selected
的值,并在触发器更新之前获取初始状态

$("#countries").chosen();

let preselected = [];

$('[selected]').each((i, node) =>{
  preselected.push($(node).attr('value'));
});

$("#Clear").click(function () {
    $('.chosen-select option').prop('selected', false);

    preselected.forEach(pre => {
      $(".chosen-select option[value='" + pre + "']")
      .attr('selected', 'selected')
      .trigger('chosen:updated');
    });
});

正如您所看到的,插件中没有任何东西可以用来实现这一点,似乎您必须通过更改DOM和触发更新来实现这一点。我会使用luckyape answer和我的代码,混合使用。

试试看

$("#countries").chosen();

$("#Clear").click(function () {
    $('.chosen-select option').prop('selected', false);
    $('.chosen-select').val(['Denmark', 'France']).trigger('chosen:updated');
});

有没有办法使其不受预先填充的选项的影响,但它们应该被还原(如果有的话)?您可以在加载时循环,以知道选择了哪些元素并检索它。@Jake前面的代码片段在您按下“清除”按钮时刷新了页面,触发循环中的事件可以解决这个问题。这同样有效,但是有没有一种方法可以使它使预先填充的选项不重要,但是它们应该被恢复(如果有的话)?Jose在上面给出了一个很好的解决方案,但想知道Selected是否有像您提供的那样已经做到了这一点。