Zrobiłem to za pomocą kodu jQuery. Funkcja .val() obecnie zaczyna się od linii 165 z attributes.js. Oto odpowiedni rozdział z moich adnotacji:
val: function(value) {
var hooks, ret, isFunction,
elem = this[0];
/// NO ARGUMENTS, BECAUSE NOT SETTING VALUE
if (!arguments.length) {
/// IF NOT DEFINED, THIS BLOCK IS NOT ENTERED. HENCE 'UNDEFINED'
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;
/// IF IS DEFINED, JQUERY WILL CHECK TYPE AND RETURN APPROPRIATE 'EMPTY' VALUE
return typeof ret === "string" ?
// handle most common string cases
ret.replace(rreturn, "") :
// handle cases where value is null/undef or number
ret == null ? "" : ret;
}
return;
}
Tak, to albo dostać undefined
lub ""
lub null
- wszystko ocenić jako fałszywe, jeśli sprawozdania.
Może wykonać funkcję pomocnika, jeśli wielokrotnie używasz tego samego warunku. – mirrormx
if ($ (selector) .val()) powinno działać. Jeśli element nie istnieje, zwróci wartość "undefined", a jeśli nie ma żadnej długości, zwróci wartość "" (która jest wartością false). – Benmj
@Benmj będzie "niezdefiniowany" również ocenić jako fałszywy? Myślałem, że nie. – Dimskiy