0

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?

Mat
  • 202,337
  • 40
  • 393
  • 406
hh54188
  • 14,887
  • 32
  • 113
  • 184

3 Answers3

3

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]));
}
1

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

$("select option").each(function() {
    console.log($(this).text());
});
Rory McCrossan
  • 331,213
  • 40
  • 305
  • 339
0

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

Ilia G
  • 10,043
  • 2
  • 40
  • 59