jQuery检查<input>是否存在并且有一个值
我有以下例子:
<input type="text" class="input1" value="bla"/> 有没有办法来检查这个元素是否存在,并在一个语句中有一个值? 或者,至less,那么短一些
 if($('.input1').length > 0 && $('input1').val() != '') 
在这里遇到一英里长的条件就让人沮丧。
如果input不存在,input将不会有值。 尝试这个…
 if($('.input1').val()) 
你可以这样做:
 if($('.input1').length && $('.input1').val().length) 
 当值为0时, length在条件中评估为false 。 
你可以做这样的事情:
 jQuery.fn.existsWithValue = function() { return this.length && this.val().length; } if ($(selector).existsWithValue()) { // Do something } 
就这一点来说,我在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; } 
 所以,你会得到undefined或""或null – 所有这些在if语句中评估为false。 
 我会做这样的事情: $('input[value]').something 。 这样可以find所有有价值的东西,并对它们进行操作。