jQuery, próbuję zmienić wybraną opcję w SELECT elementu dopasować inną wartość wejściowego:Safari nie zaktualizuje renderowania SELECT przy zmianie opcji wybranej przez jQuery
$('#mySelect')
.find('option')
.filter(function() {
return this.text == $('#selectedRejectReason').val();
}).attr('selected', true)
Gdy strona renderuje i to JS działa, widzę to aktualizując DOM dobrze w internetowej inspektora 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>
Po załadowaniu strony, domyślnie żadna z opcji ma wybranego atrybutu ... więc pierwszy element pokazuje. Po uruchomieniu jQuery DOM jest aktualizowany, więc wygląda tak, jak powyżej, ale w Safari nadal pokazuje "WYBIERZ POZIOM" na stronie. Działa to dobrze w Firefoksie.
Jakieś pomysły, dlaczego? Wygląda jak błąd Safari. Niestety, to łamie naszą stronę na iPhonie.
Poszukując niektórych osób, wydaje się, że poprawiono to przez uaktualnienie z jQuery 1.6 do 1.7. Niestety, nie mam w tej chwili luksusu. Ale jeśli to jest poprawka, ktoś wie, co zmieniło, że to naprawi?
Należy użyć '.prop' zamiast' .attr' jeśli używasz jQuery w wersji 1.6 lub wyższej. –
@Joseph, proszę, zrób odpowiedź, więc dam ci kredyt! Nie mam pojęcia, dlaczego to naprawia, ale tak. Patrząc na DOM, znacznik jest taki sam, ale z PROP przynajmniej aktualizuje obraz. –