我有一个表单元素表,其中每行代表一个记录,列代表一个字段。我需要选择给定列中的所有表单元素。
同一列中的表单元素具有相同的名称格式。例如,表示位置的表单元素的格式为record*.location
,其中*
是索引。
是否可以通过单个jQuery选择来选择它们?如果是这样,那么在循环中对它们中的每一个进行document.getElementById()
比较,性能如何呢?
答案 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,你可能想要这样做。