Dim*_*kiy 66 javascript jquery
我有以下示例:
<input type="text" class="input1" value="bla"/>
Run Code Online (Sandbox Code Playgroud)
有没有办法检查这个元素是否存在并且在一个语句中有值?或者,至少,任何更短的东西
if($('.input1').length > 0 && $('input1').val() != '')
Run Code Online (Sandbox Code Playgroud)
这里只有一英里长的条件让你感到沮丧.
Bri*_*ian 127
如果输入不存在,则输入将没有值.试试这个...
if($('.input1').val())
Run Code Online (Sandbox Code Playgroud)
Cur*_*urt 25
你可以这样做:
if($('.input1').length && $('.input1').val().length)
Run Code Online (Sandbox Code Playgroud)
lengthfalse在值为的时候评估条件0.
97l*_*ave 13
你可以这样做:
jQuery.fn.existsWithValue = function() {
return this.length && this.val().length;
}
if ($(selector).existsWithValue()) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
只是为了它,我在jQuery代码中跟踪了这一点..val()函数当前从attributes.js的第165行开始.这是相关部分,带有我的注释:
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;
}
Run Code Online (Sandbox Code Playgroud)
所以,你要么得到undefined或者""或者null- 所有这些在if语句中都被评为false.