按模式选择jQuery

时间:2011-02-21 03:21:35

标签: jquery

我有一个表单元素表,其中每行代表一个记录,列代表一个字段。我需要选择给定列中的所有表单元素。

同一列中的表单元素具有相同的名称格式。例如,表示位置的表单元素的格式为record*.location,其中*是索引。

是否可以通过单个jQuery选择来选择它们?如果是这样,那么在循环中对它们中的每一个进行document.getElementById()比较,性能如何呢?

2 个答案:

答案 0 :(得分:4)

使用jQuery的自定义选择器创建$ .expr。我在http://jsfiddle.net/ygSAy/

给你一个例子

除非您真的努力使过滤功能超级高效,否则您将限制将其用于特定上下文。

修改:评论性能稍好的高性能版本:http://jsfiddle.net/ygSAy/2/

答案 1 :(得分:4)

var locations = $('td :input[name$="\\.location"]')

这会使用attribute-ends-with-selector(docs),并会选择以.location结尾的所有元素。


最终如果你担心表现,你可以自己做这样的选择:

function selectInputs( el, type ) {
    var arr = [],
        inputs = document.getElementById( el ).getElementsByTagName( 'input' ),
        len = inputs.length;
    while( len-- ) {
        if( inputs[len].name.indexOf( type ) > -1 ) {
            arr.push( inputs[len] );
        }
    }
    return arr;
}

var locations = selectInputs( 'myTable', '.location' );

如果未动态添加元素,则可以缓存DOM选择。无论你是否使用jQuery,你可能想要这样做。