2014-06-27 10 views
5

Poniższy zachowuje się inaczej między jQuery 1.9 i 1.10+:jQuery wybierz .val Box („”) zachowanie różni się od 1,9 do 1.10+ Jaka jest najkrótsza droga do zrobienia, że ​​

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

Ideą tego kodu jest wybrać pierwszą opcję.

Po 1.10 część $('#s1').val(''); przestała działać w ten sam sposób. Przypuszczam, że nigdy nie miał być stosowany w ten sposób, ale jego stary kod i muszą zostać zmodernizowane w jakiś sposób ...

Po jQuery 1.10 nic nie jest zaznaczone i $('#s1').val() powraca null.

Zmiana kodu:

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

Czy praca z nowych i starych wersji jQuery.

Moje pytanie brzmi: czy istnieje krótszy/bardziej elegancki sposób na zrobienie tego samego?

+1

można proszę opracować „już nie działa w ten sam sposób”? –

+4

Co masz na myśli przez '$ ('# s1'). Val ('');'? Aby wybrać pierwszą opcję? –

+1

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

Odpowiedz

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

Można również zrobić to, jeśli naprawdę jak jQuery:

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

Więcej tutaj: https://stackoverflow.com/a/1314266/283863

+0

oba nie działają, jeśli pierwsza opcja jest ukryta; i tak wybrałeś twoją odpowiedź jako najbliżej ... – bbonev

2

Tylko nie ustawić wartość automatycznie wybiera pierwszą wartość i działa w obu wersjach :

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

demo version: 1.9.1 i demo version: 1.10.1


Zgodnie z aktualizacją i komentarze, można użyć tak:

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

demo

+0

+1, ponieważ masz rację .remove ale problem jest z .hide – bbonev

+0

co z tym? http://jsfiddle.net/Ngaqk/4/ –

+0

tak, działa, ale potrzebuję ogólny sposób, ponieważ pierwsza widoczna opcja nie jest znana z góry – bbonev

Powiązane problemy