Zmena vybranej hodnoty rozbaľovacieho zoznamu pomocou jQuery

Mám rozbaľovací zoznam so známymi hodnotami. Snažím sa nastaviť rozbaľovací zoznam na konkrétnu hodnotu, o ktorej viem, že existuje, pomocou jQuery. Pomocou bežného JavaScriptu by som urobil niečo také:

ddl = document.getElementById("ID of element goes here");
ddl.value = 2; // 2 being the value I want to set it too.

Musím to však urobiť pomocou jQuery, pretože pre svoj selektor používam triedu CSS (hlúpe ASP.NET klientské id...).

Tu je niekoľko vecí, ktoré som vyskúšal:

$("._statusDDL").val(2); // Doesn't find 2 as a value.
$("._statusDDL").children("option").val(2) // Also failed.

Ako to môžem urobiť pomocou jQuery?

Aktualizácia

Takže ako sa ukázalo, mal som to správne na prvýkrát s:

$("._statusDDL").val(2);

Keď dám upozornenie tesne nad, funguje to dobre, ale keď odstránim upozornenie a nechám to bežať naplno, dostanem chybu

Nepodarilo sa nastaviť vybranú vlastnosť. Neplatný index

Nie'som si istý, či je to chyba jQuery alebo Internet Explorera 6 (tipujem Internet Explorer 6), ale je to strašne otravné.

Riešenie

Dokumentácia jQuery's uvádza:

[jQuery.val] skontroluje alebo vyberie všetky rádiové tlačidlá, zaškrtávacie políčka a možnosti výberu, ktoré zodpovedajú nastaveným hodnotám.

Toto správanie je vo verziách jQuery 1.2 a vyšších.

S najväčšou pravdepodobnosťou to chcete:

$("._statusDDL").val('2');
Komentáre (9)

Skúste to s

$("._statusDDL").val("2");

a nie s

$("._statusDDL").val(2);
Komentáre (0)

Ako načítavate hodnoty do rozbaľovacieho zoznamu alebo určujete, ktorú hodnotu vybrať? Ak to robíte pomocou Ajaxu, potom dôvodom, prečo potrebujete oneskorenie pred výberom, môže byť to, že hodnoty neboli načítané v čase, keď sa vykonal príslušný riadok. To by tiež vysvetľovalo, prečo to fungovalo, keď ste na riadok pred nastavením stavu umiestnili príkaz upozornenia, pretože akcia upozornenia by poskytla dostatočné oneskorenie na načítanie údajov.

Ak používate niektorú z metód jQuery'Ajax, môžete zadať funkciu spätného volania a potom do funkcie spätného volania vložiť $("._statusDDL").val(2);.

Toto by bol spoľahlivejší spôsob riešenia problému, pretože by ste si mohli byť istí, že sa metóda vykonala, keď boli údaje pripravené, aj keby to trvalo dlhšie ako 300 ms.

Komentáre (0)