Если вы посмотрите на строку исходного кода jQuery 1.5.1 1970, вы увидите следующее:
// Treat null/undefined as ""; convert numbers to string
if ( val == null ) {
val = "";
Таким образом, ожидаемое поведение такое же, как если бы вы дали пустую строку в качестве аргумента.
Если вы продолжите линию 1984, вы увидите это:
} else if ( jQuery.nodeName( this, "select" ) ) {
var values = jQuery.makeArray(val);
jQuery( "option", this ).each(function() {
this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
});
if ( !values.length ) {
this.selectedIndex = -1;
}
Итак, ожидаемое поведение:
- , если есть
option
с пустымстроковое значение, выберите это. - если не задано
selectedIndex = -1
С этого момента браузер должен определить, что делать, если для selectedIndex
установлено значение -1
Глядя на библиотеку msdn , она говорит:
Свойство selectedIndex возвращает -1, если объект select не содержит выбранных элементов.Установка свойства selectedIndex удаляет все существующие выбранные элементы.
Таким образом, в ожидаемом поведении, по-видимому, происходит отмена выбора всех параметров
То же самое относится к Документация MDC и, следовательно, firefox, где они очень явно об этом говорят
Возвращает индекс текущего выбранного элемента.Вы можете выбрать элемент, назначив его индекс этому свойству.При назначении этому свойству значения -1 все элементы будут отменены.
Похоже, что браузеры на основе WebKit по-разному относятся к вещам.
Если вы воспользуетесь Google "WebKit selectedIndex", выпосмотрите довольно много сообщений об ошибках, связанных с тегом select, так что, может быть, это просто фанк;)
Если подумать, это ошибка в jQuery, поскольку это библиотека, которая должна иметь возможность вести себя одинаковобраузеры - надо сообщать;)