查找id不包含特定字符的所有文本框

时间:2012-02-09 15:19:01

标签: jquery jquery-selectors jquery-filter

我有以下代码,并且我正在尝试检索id不包含单词OT的txtbox。

<input type="text" id="txtMo1">
<input type="text" id="txtOTMo1">
<input type="text" id="txtTu1">
<input type="text" id="txtOTTu1">
...
...
<input type="text" id="txtMo4">
<input type="text" id="txtOTMo4">
<input type="text" id="txtTu4">
<input type="text" id="txtOTTu4">
...
...

我尝试使用.find,其中idtxt开头,但它给了我一切(显然)。如何仅检索ID以txt开头但不包含OT的文本框?

.find("input[id ^= 'txt']")

2 个答案:

答案 0 :(得分:6)

不要使用选择器:使用filter

.find('input[id^="txt"]').filter(function() {
    return -1 === this.id.indexOf('OT');
});

如果要保留该元素,则filter的回调应返回true,如果应删除该元素,则返回false。在这种情况下,函数将返回true,如果indexOf返回-1,则会保留该元素,这意味着OT不存在。

答案 1 :(得分:2)

为什么不使用类代替那些特定的文本框而使用类选择器呢?

但如果你需要一个解决方案,那么它就是。

$('input[id^-"txt"]').filter(function() {
    return this.id.indexOf('OT') == -1;
});

您可以像这样渲染您的标记,并使您的代码变得简单。

标记

<input type="text" id="txtMo1">
<input type="text" class="OT" id="txtOTMo1">
<input type="text" id="txtTu1">
<input type="text" class="OT"id="txtOTTu1">

的js

$('input.OT').doYourStuff();