JQuery select box .val ('') comportement diffère de 1.9 à 1.10+ quel est le moyen le plus court de faire

Ce qui suit se comporte différemment entre jQuery 1.9 et 1.10+:

<select id="s1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> $('#s1 option[value=1]').hide(); $('#s1').val(''); 

L'idée derrière ce code est de sélectionner la première option.

Après 1.10, le $('#s1').val(''); La partie ne fonctionne plus de la même manière. Je suppose qu'il n'a jamais été utilisé comme ça, mais c'est son ancien code et doit être modernisé d'une manière ou d'une autre …

Après jQuery 1.10, rien n'est sélectionné et $('#s1').val() renvoie null .

Modification du code pour:

 $('#s1 option[value=1]').hide(); $('#s1').val($('#s1 option').first().val()); 

Est-ce que le travail avec les versions jQuery nouvelles et anciennes.

Ma question est de savoir s'il existe un moyen plus court / plus élégant de faire la même chose?

 $("#s1")[0].selectedIndex = 0; 

Vous pouvez également le faire si vous aimez vraiment jQuery:

 $("#s1").prop("selectedIndex", 0); 

Plus ici: https://stackoverflow.com/a/1314266/283863

Il suffit de ne pas définir la valeur qu'il sélectionne la première valeur automatiquement et fonctionne dans les deux versions:

 $('#s1 option[value=1]').remove(); //$('#s1').val(''); 

Version de démonstration: 1.9.1 et version de démonstration: 1.10.1


Selon votre mise à jour et vos commentaires, vous pouvez utiliser comme ceci:

 $('#s1 option[value=1]').hide(); $('#s1 option[value=2]').hide(); $('#s1 option:visible').first().attr('selected', 'selected'); 

Démo