Safari не будет обновлять рендеринг SELECT при изменении параметра, выбранного с помощью jQuery - PullRequest
16 голосов
/ 26 января 2012

Используя jQuery, я пытаюсь изменить выбранную опцию в элементе SELECT, чтобы она соответствовала другому входному значению:

$('#mySelect')
    .find('option')
        .filter(function() {
            return this.text == $('#selectedRejectReason').val(); 
        }).attr('selected', true)

Когда страница отображается, и этот JS запускается, я вижу, как он обновляетDOM прекрасно работает в веб-инспекторе Safari:

<select>    
    <option value="label">Select Reason</option>
<option value="Wrong Amount" selected="true">Wrong Amount</option>
<option value="Wrong Time">Wrong Time</option>
<option value="Wrong Place">Wrong Place</option>
</select>

Когда по умолчанию загружается страница, ни один из OPTIONS не имеет атрибута SELECTED ... поэтому отображается первый элемент.JQuery запускается, DOM обновляется так, как это выглядит выше, но в Safari он все еще показывает «SELECT REASON» на странице.Это прекрасно работает в Firefox.

Есть идеи почему?Похоже, ошибка Safari.Увы, он ломает наш сайт на iPhone.

При выполнении поиска некоторые люди, кажется, исправляют это путем обновления с jQuery 1.6 до 1.7.Увы, у меня нет такой роскоши в данный момент.Но если это исправление, кто-нибудь знает, что изменилось, что исправляет это?

1 Ответ

32 голосов
/ 26 января 2012

Начиная с jQuery 1.6, вы должны использовать .prop:

$('#mySelect')
    .find('option')
    .filter(function() {
        return this.text == $('#selectedRejectReason').val(); 
    })
    .prop('selected', true);

Посмотрите документы jQuery: http://api.jquery.com/prop/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...