Si vous regardez la ligne 1970 du code source de jQuery 1.5.1, vous verrez ceci :
// Treat null/undefined as ""; convert numbers to string
if ( val == null ) {
val = "";
Le comportement attendu est donc le même que si vous donniez la chaîne vide comme argument.
Si vous continuez sur la ligne 1984, vous verrez ceci :
} 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;
}
Le comportement attendu est donc le suivant :
- s'il existe un
option
avec une valeur de chaîne vide, choisissez-la.
- s'il n'est pas défini
selectedIndex = -1
À partir de là, c'est au navigateur de déterminer ce qu'il doit faire si selectedIndex
est fixé à -1
En regardant la bibliothèque msdn il est dit :
L'indice sélectionné pr si l'objet sélectionné ne contient aucun élément sélectionné. La définition de la propriété selectedIndex efface tout les éléments sélectionnés existants.
Il semble donc que le comportement attendu soit la désélection de toutes les options.
Il en va de même pour le Documentation du MDC et donc firefox, où ils sont très explicites à ce sujet
Renvoie l'index de sélectionné. Vous pouvez sélectionner un élément en attribuant son index à cette propriété à cette propriété. En attribuant -1 à cette propriété tous les éléments seront désélectionnés.
Il semble que les navigateurs basés sur webkit aient une vision différente des choses.
Si vous cherchez sur Google "webkit selectedIndex", vous verrez plusieurs rapports de bogues concernant la balise select, donc peut-être que c'est juste un peu bizarre ;)
En y réfléchissant, il s'agit d'un bug dans jQuery puisque c'est une bibliothèque qui devrait pouvoir se comporter de la même manière dans tous les navigateurs - cela devrait être signalé ;)