Nur zum Teufel habe ich das im jQuery-Code aufgespürt. Die Funktion .val () beginnt derzeit in Zeile 165 von attribute.js . Hier ist der relevante Abschnitt mit meinen Anmerkungen:
val: function( value ) {
var hooks, ret, isFunction,
elem = this[0];
if ( !arguments.length ) {
if ( elem ) {
hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
return ret;
}
ret = elem.value;
return typeof ret === "string" ?
ret.replace(rreturn, "") :
ret == null ? "" : ret;
}
return;
}
Sie erhalten also entweder undefinedoder ""oder null- alle werden in if-Anweisungen als falsch bewertet.