所以我使用padolsey's regex filter尝试选择动态生成的嵌套表单字段。为什么我一直在下面的选择器代码中为 test 获取一个空值?
jQuery.expr[':'].regex = function(elem, index, match) {
var matchParams = match[3].split(','),
validLabels = /^(data|css):/,
attr = {
method: matchParams[0].match(validLabels) ?
matchParams[0].split(':')[0] : 'attr',
property: matchParams.shift().replace(validLabels,'')
},
regexFlags = 'ig',
regex = new RegExp(matchParams.join('').replace(/^s+|s+$/g,''), regexFlags);
return regex.test(jQuery(elem)[attr.method](attr.property));
}
//selector code
$(document).ready(function() {
var test = $('input:regex(id, agreement_activities_attributes_\d*_id)');
console.log(test);
});
包含输入字段的html代码我试图选择
<input id="agreement_activities_attributes_0_id" name="agreement[activities_attributes][0][id]" type="hidden" value="28" />
答案 0 :(得分:2)
代码中有错误。
.replace(/^s+|s+$/g,'')
应该是
.replace(/^\s+|\s+$/g,'')
然后它应该工作。
替换删除任何周围的空格(修剪字符串)。您在选择器中使用的空间(:regex(id, agreement_activities_attributes_\d*_id)
)将包含在匹配模式中,因此仅匹配id以空格开头的元素。