hh54188
hh54188

Reputation: 15646

How can I get html <option> tag's content with jQuery

I have a easy select tag:

<select>
  <option></option>
  <option></option>
</select>

Then I want use jQuery get the option's content:

var s=$('select option');
for(var i=0;i<s.length;i++){
    console.log(s[i]);
}

it would only show "<option>",without the content.

If I use console.log(s[i].html());, it would tell me it is wrong.

So how can I get the content?

Upvotes: 0

Views: 4922

Answers (3)

user1106925
user1106925

Reputation:

You don't need jQuery to get the text content.

An HTMLOptionElement has a .text property.

var s = $('select option');

for(var i = 0; i < s.length; i++) {
    console.log(s[i].text);
}

Although if you want the .outerHTML of the element (a little confused by your question), you could do this...

var s = $('select option');

for(var i = 0; i < s.length; i++) {
    console.log(s[i].outerHTML);
}

...though this only recently became available in Firefox, so you could create a method to patch it...

function outerHTML(el) {
    return el.outerHTML || document.createElement('div')
                                   .appendChild(el.cloneNode(true))
                                   .parentNode
                                   .innerHTML;
}

...and use it like this...

var s = $('select option');

for(var i = 0; i < s.length; i++) {
    console.log(outerHTML(s[i]));
}

Upvotes: 3

Ilia G
Ilia G

Reputation: 10221

Use text() method to extract element's text node value

Upvotes: 0

Rory McCrossan
Rory McCrossan

Reputation: 337691

Assuming by 'content' you mean the text value of the option, try this:

$("select option").each(function() {
    console.log($(this).text());
});

Upvotes: 1

Related Questions