我下面舉個例子:jQuery的檢查<input>存在,並且有一個價值
<input type="text" class="input1" value="bla"/>
有沒有一種方法,以檢查是否存在此元素,在一個聲明中具有價值? 或者,至少,什麼短則
if($('.input1').length > 0 && $('input1').val() != '')
剛開用英里長的情況在這裏受挫。
我下面舉個例子:jQuery的檢查<input>存在,並且有一個價值
<input type="text" class="input1" value="bla"/>
有沒有一種方法,以檢查是否存在此元素,在一個聲明中具有價值? 或者,至少,什麼短則
if($('.input1').length > 0 && $('input1').val() != '')
剛開用英里長的情況在這裏受挫。
的投入將不具有價值,如果它不存在。試試這個......
if($('.input1').val())
我寫了一些小函數,但也使用了這個例子。 – Dimskiy 2013-03-18 18:09:09
@Christian:input1不是上述答案中的html標記,而是一個類。 – 2014-09-22 03:26:05
我不完全同意信任輸入元素的值屬性。 它有時可能是空的(裏面沒有數值),但仍然存在於範圍內。 所以最好的方法是依靠$('。input1').length> 0然後做任何處理。 – 2015-12-04 15:21:28
你可以這樣做:
if($('.input1').length && $('.input1').val().length)
length
評估爲false
的條件下,當值0
。
Downvote無評論?爲什麼? – 2013-03-18 16:15:57
@MarkWalters:這裏沒有downvote,但它沒有比原來的更多的改進。 – 2013-03-18 16:17:02
我會爲你效勞。 .length的添加是我的首選。 – 2013-09-14 19:48:43
你可以做這樣的事情:
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語句爲假。
我會這樣做:$('input[value]').something
。這樣可以找到所有有價值的投入,並對它們進行操作。
如果您多次使用相同類型的條件,可能會創建一個輔助函數。 – mirrormx 2013-03-18 16:14:14
if($(selector).val())should be working。如果元素不存在,它將返回'undefined',如果它沒有長度,它將返回「」(它的計算結果爲false)。 – Benmj 2013-03-18 16:15:06
@Benmj會'未定義'評估爲假?我認爲它不會。 – Dimskiy 2013-03-18 16:17:54