2012-04-08 10 views
0

Ich habe eine einfache select-Tag:Wie kann ich html <option> Tag-Inhalt mit jQuery bekommen

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

Dann möchte ich jQuery die Option Inhalt erhalten:

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

es nur "<option>" zeigen würde, ohne den Inhalt.

Wenn ich console.log(s[i].html()); verwende, würde es mir sagen, dass es falsch ist.

Also, wie kann ich den Inhalt bekommen?

+1

möglich Duplikat [jQuery erhalten Text wählen Sie die Option] (http://stackoverflow.com/questions/196684/jquery-get-select-option- Text) –

+0

Kann mir jemand sagen, warum es nicht mit der .html() Methode funktioniert? Es scheint mir, dass es sollte ... –

+1

@Euloiix: Weil innerhalb der 'for' -Schleife keine jQuery-Objekte sind, und daher jQuery '' '' '' hml() 'Methode nicht verfügbar ist. –

Antwort

3

Sie nicht jQuery müssen die bekommen Textinhalt. Eine HTMLOptionElement hat eine .text Eigenschaft.

var s = $('select option'); 

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

Obwohl, wenn Sie die .outerHTML des Elements (ein wenig verwirrt durch Ihre Frage) wollen, können Sie dies tun ...

var s = $('select option'); 

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

... obwohl diese nur wurde kürzlich in Firefox verfügbar, so dass Sie eine Methode zum Patchen erstellen konnten ...

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

... und es so verwenden ...

var s = $('select option'); 

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

von ‚Inhalt‘ Vorausgesetzt, dass Sie den Text Wert der Option bedeuten, versuchen Sie dies:

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

Verwendung text() Methode Wert Element des Textknoten zu extrahieren