1

我需要一些帮助来找到 jQuery 的选择器。

我有这些文本框:

<input type="text" name="text[1]" value="1,2,3">
<input type="text" name="text[2]" value="1,8,9">
<input type="text" name="text[3]" value="7,4,3">

我需要对每个这些文本框进行搜索并查找 value=1 是否存在。

我需要选择器的帮助(类似于$(input[name=text[]]).each()

我不想使用$(input[name^='text']).each(),我认为它不安全,因为我的其余代码。有没有更好的办法?

任何人都可以帮忙吗?

4

4 回答 4

2

我会使用一个占位符类:

<input class="myselector" type="text" name="text[1]" value="1,2,3">
<input class="myselector" type="text" name="text[2]" value="1,8,9">
<input class="myselector" type="text" name="text[3]" value="7,4,3">

那么这只是一个问题:

$(input.myselector).each()
于 2009-10-08T11:37:15.930 回答
2

将它们包装在一个容器中:

<div id="container">
    <input type="text" name="text[1]" value="1,2,3">
    <input type="text" name="text[2]" value="1,8,9">
    <input type="text" name="text[3]" value="7,4,3">
</div>

并用它选择它们,就像这样。

$("#container > input").each(function(i, element){
    $element = $(element);
    if($element.val().indexOf('1') >= 0){
        $element.css("background-color", "yellow");
    }
});

甚至可以像这样编写自定义选择器:

$.extend($.expr[':'], {
    contains1: function(e) {
        return $(e).val().indexOf('1') >= 0; 
    }
});

$("#container > input:contains1").css("background-color", "yellow");
于 2009-10-08T11:45:14.353 回答
0

为什么不这样做:

$('input[name="^text["]').filter('[name$="]"]')

我不知道您是否能够在不使用过滤器功能的情况下使其更具体。我可能会同意名称以文本开头,并确保在其他地方使用不同的 ID。

于 2009-10-08T11:37:10.903 回答
0

map()与类似的东西一起使用:

$("input[type=text]").map(function() {if ($(this).val() == 1) return $(this)})
于 2009-10-08T11:37:52.730 回答