2014-06-27 6 views
5

Das zu tun folgende verhält sich anders zwischen jQuery 1.9 und 1.10+:jQuery Box .val wählen (‚‘) Verhalten von 1,9 unterscheidet sich 1.10+, was der kürzeste Weg ist, dass

<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(''); 

Die Idee hinter diesem Code ist die erste Option auszuwählen.

Nach 1.10 funktioniert der $('#s1').val(''); Teil nicht mehr auf die gleiche Weise. Ich nehme an, dass es nie so verwendet werden sollte, aber seinen alten Code und muss in irgendeiner Weise modernisiert werden ...

Nach jQuery 1.10 ist nichts ausgewählt und $('#s1').val() gibt null zurück.

Ändern von Code zu:

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

Ist die Arbeit mit den neuen und alten jQuery Versionen.

Meine Frage ist, ob es eine kürzere/elegantere Möglichkeit gibt, das Gleiche zu tun?

+1

Sie bitte erarbeiten 'nicht mehr in der gleichen Art und Weise arbeiten'? –

+4

Was meinen Sie mit '$ ('# s1'). Val ('');'? Um die erste Option auszuwählen? –

+1

[1.9.1 Geige] (http://jsfiddle.net/979HZ/) vs [1.10.1 Geige] (http://jsfiddle.net/979HZ/1/) – Phil

Antwort

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

Sie können dies auch tun, wenn Sie wirklich, wie jQuery:

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

hier Mehr: https://stackoverflow.com/a/1314266/283863

+0

beide funktioniert nicht, wenn Die erste Option ist versteckt. wie auch immer Ihre Antwort als am nächsten gewählt ... – bbonev

2

einfach nicht setzen den Wert automatisch ersten Wert auswählt und arbeitet in beiden Versionen :

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

demo version: 1.9.1 und demo version: 1.10.1


Wie pro Ihre Aktualisierung und Kommentare, können Sie wie folgt verwenden:

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

demo

+0

+1, weil Sie richtig sind für .remove, aber das Problem ist mit .Hide – bbonev

+0

Wie wäre es damit? http://jsfiddle.net/Ngaqk/4/ –

+0

yep, es funktioniert, aber ich brauche generische Weise, weil die erste sichtbare Option im Voraus nicht bekannt ist – bbonev

Verwandte Themen