我需要通过id regex获取一些元素。我找到了source的一些解决方案:
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));
}
每个人都声称它工作正常但是当我尝试运行简单的代码$(':regex[id,^node\-[0-9]+\-[0-9]+$]')
时,我在匹配[3] .split上收到错误,说该方法不存在。实际上我在这个函数的第一行添加了console.log(匹配),我得到了:
[":regex", "regex", undefined, undefined, index: 0, input: ":regex[id,^node-[0-9]+-[0-9]+$]"]
我做错了什么?
答案 0 :(得分:2)
您已使用[]
代替()
来指定正则表达式
$(':regex(id,^node\-[0-9]+\-[0-9]+$)')
演示:Fiddle
我还建议将它与其他一些更快的选择器(如类选择器或元素选择器)一起使用,或者至少使用属性存在过滤器,如$('[id]:regex(id,^节点 - [0-9] + - [0-9] + $)')