Prop выбран для элемента выбора с jquery в выбранном select [duplicate]

Спасибо за комментарий, tec. Мне удалось найти существующую неподтвержденную ошибку Webkit, которая объясняет эту проблему: https://bugs.webkit.org/show_bug.cgi?id=35801 (EDIT: теперь исправлено!) [/ ​​G1]

Похоже, что есть некоторые дебаты относительно того, какая часть ошибок и насколько она исправлена. Мне кажется, что это плохое поведение. Это особенно беспокоило меня, потому что, по крайней мере, в Chrome это происходит, когда код находится в сценариях, которые выполняются немедленно (до загрузки страницы), даже когда консоль открыта, всякий раз, когда страница обновляется. Вызов console.log, когда консоль еще не активна, приводит только к ссылке на объект, находящийся в очереди, а не на вывод, который будет содержать консоль. Поэтому массив (или любой объект) не будет оцениваться до тех пор, пока консоль не будет готова. Это действительно случай ленивой оценки.

Однако есть простой способ избежать этого в вашем коде:

var s = ["hi"];
console.log(s.toString());
s[0] = "bye";
console.log(s.toString());

Вызывая toString, вы создаете представление в памяти которые не будут изменены следующими операциями, которые консоль будет читать, когда она будет готова. Вывод консоли немного отличается от непосредственного передачи объекта, но он кажется приемлемым:

hi
bye

82
задан MBaas 26 April 2016 в 16:17
поделиться

3 ответа

В разделе «Обновление, выбранное динамически» в docs : вам нужно запустить событие «выбранное: обновлено» в поле

$(document).ready(function() {

    $('select').chosen();

    $('button').click(function() {
        $('select').val(2);
        $('select').trigger("chosen:updated");
    });

});

ПРИМЕЧАНИЕ: версии, предшествующие к 1.0 использовалось следующее:

$('select').trigger("liszt:updated");
182
ответ дан wilbbe01 27 August 2018 в 03:17
поделиться

Мой ответ задерживается, но я хочу добавить некоторую информацию, которая пропущена во всех вышеперечисленных ответах.

1) Если вы хотите выбрать одно значение в выбранном выборе.

$('#select-id').val("22").trigger('chosen:updated');

2) Если вы используете множественный выбранный выбор, тогда вам может потребоваться установить несколько значений за один раз.

$('#documents').val(["22", "25", "27"]).trigger('chosen:updated');

Информация, собранная по следующим ссылкам: 1) Избранные документы 2) Избранная дискуссия Github

27
ответ дан Aamir 27 August 2018 в 03:17
поделиться

Иногда вам нужно удалить текущие параметры, чтобы управлять выбранными параметрами.

Вот пример, как установить параметры:

<select id="mySelectId" class="chosen-select" multiple="multiple">
  <option value=""></option>
  <option value="Argentina">Argentina</option>
  <option value="Germany">Germany</option>
  <option value="Greece">Greece</option>
  <option value="Japan">Japan</option>
  <option value="Thailand">Thailand</option>
</select>

<script>
activateChosen($('body'));
selectChosenOptions($('#mySelectId'), ['Argentina', 'Germany']);

function activateChosen($container, param) {
    param = param || {};
    $container.find('.chosen-select:visible').chosen(param);
    $container.find('.chosen-select').trigger("chosen:updated");
}

function selectChosenOptions($select, values) {
    $select.val(null);                                  //delete current options
    $select.val(values);                                //add new options
    $select.trigger('chosen:updated');
}
</script>

JSFiddle (в том числе, как добавить варианты): https://jsfiddle.net/tbaf0r38/30/

1
ответ дан Tobi G. 27 August 2018 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: