Подтвердить что ты не робот

Safari не будет обновлять рендеринг SELECT при изменении параметра OPTION, выбранного с помощью jQuery

Используя 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. Увы, у меня сейчас нет такой роскоши. Но если это исправить, кто-нибудь знает, что изменилось, что исправляет это?

4b9b3361

Ответ 1

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

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

Взгляните на документы jQuery: http://api.jquery.com/prop/