Wijzig de geselecteerde waarde van een drop-down lijst met jQuery

Ik heb een drop-down lijst met bekende waarden. Wat ik probeer te doen is de drop-down lijst in te stellen op een bepaalde waarde waarvan ik weet dat die bestaat met behulp van jQuery. Met gewone JavaScript, zou ik iets doen als:

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

Ik moet dit echter doen met jQuery, omdat ik'm een CSS-klasse gebruik voor mijn selector (stomme ASP.NET client ids...).

Hier zijn een paar dingen die ik'heb geprobeerd:

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

Hoe kan ik dit doen met jQuery?

Update

Dus zoals blijkt, ik had het goed de eerste keer met:

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

Als ik er een waarschuwing boven zet werkt het prima, maar als ik de waarschuwing weghaal en het op volle snelheid laat lopen, krijg ik de foutmelding

Kon de geselecteerde eigenschap niet instellen. Ongeldige Index

Ik'ben niet zeker of het een bug is met jQuery of Internet Explorer 6 (ik'gok Internet Explorer 6), maar het'is vreselijk irritant.

Oplossing

jQuery's documentatie stelt:

[jQuery.val] controleert, of selecteert, alle radioknoppen, selectievakjes, en selecteeropties die overeenkomen met de set waarden.

Dit gedrag is in jQuery versies 1.2 en hoger.

Je wilt dit waarschijnlijk:

$("._statusDDL").val('2');
Commentaren (9)

Probeer maar met

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

en niet met

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

Hoe laadt u de waarden in de keuzelijst of hoe bepaalt u welke waarde u selecteert? Als je dit doet met behulp van Ajax, dan kan de reden dat je de vertraging nodig hebt voordat de selectie plaatsvindt zijn dat de waarden niet geladen waren op het moment dat de regel in kwestie werd uitgevoerd. Dit zou ook verklaren waarom het werkte als je een alert statement op de regel zette voordat je de status instelde, omdat de alert action genoeg vertraging zou geven om de gegevens te laden.

Als je een van jQuery's Ajax methoden gebruikt, kun je een callback functie opgeven en dan $("._statusDDL").val(2); in je callback functie zetten.

Dit zou een meer betrouwbare manier zijn om het probleem op te lossen, omdat je er zeker van kunt zijn dat de methode wordt uitgevoerd wanneer de gegevens klaar zijn, zelfs als het langer duurt dan 300 ms.

Commentaren (0)