How to get $(this) selected option in jQuery?

The following code works:

$("#select-id").change(function(){ var cur_value = $('#select-id option:selected').text(); . . .
});

How to refactor the second line to:

var cur_value = $(this).***option-selected***.text();

What do you use for ***option-selected***?

9 Answers

For the selected value: $(this).val()

If you need the selected option element, $("option:selected", this)

1
 $(this).find('option:selected').text();
1

Best and shortest way in my opinion for onchange events on the dropdown to get the selected option:

$('option:selected',this);

to get the value attribute:

$('option:selected',this).attr('value');

to get the shown part between the tags:

$('option:selected',this).text();

In your sample:

$("#select-id").change(function(){ var cur_value = $('option:selected',this).text();
});
3
var cur_value = $('option:selected',this).text();
1

This should work:

$(this).find('option:selected').text();
2

You can use find to look for the selected option that is a descendant of the node(s) pointed to by the current jQuery object:

var cur_value = $(this).find('option:selected').text();

Since this is likely an immediate child, I would actually suggest using .children instead:

var cur_value = $(this).children('option:selected').text();
var cur_value = $(this).find('option:selected').text();

Since option is likely to be immediate child of select you can also use:

var cur_value = $(this).children('option:selected').text();
4

Best guess:

var cur_value = $('#select-id').children('option:selected').text();

I like children better in this case because you know you're only going one branch down the DOM tree...

1

It's just

$(this).val();

I think jQuery is clever enough to know what you need

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like