jQuery-Objekte sind Wrapper-Listen, die die tatsächlichen nackten DOM-Elemente als Listeneinträge enthalten. jQuery erweitert diese DOM-Objekte nicht. Sämtliche jQuery-Methoden musst du immer über den jQuery-Wrapper aufrufen. Also: DOM-Elemente haben keine val-Methode, jQuery-Objekte haben eine solche.
Beim Durchlaufen einer Liste kannst du z.B. immer wieder jQuery-Objekte erzeugen, indem du das DOM-Element mit $(el) einhüllst.
Um z.B. einen Array mit allen Werten zu bekommen, kannst du map benutzen:
var values = $('.foo').map(function () {
return $(this).val();
});
this zeigt auf das DOM-Element, mit $(…) wird jeweils ein jQuery-Wrapper erzeugt und darauf val() aufgerufen. Bei each würde man ähnlich arbeiten.
Du kannst eine Wrapper-Liste mit eq auf ein Element reduzieren und ggf. mit end dies wieder rückgängig machen.
Mathias