HTML5数据属性中的通配符

mad*_*low 4 javascript jquery html5 sizzle

是否可以在属性名称中使用带有通配符的jQuery查找所有DOM元素?

请考虑以下HTML:

<input 
     id="val1" 
     type="text" 
     data-validate-required 
     data-validate-minlength="3" 
     data-validate-email />
Run Code Online (Sandbox Code Playgroud)

我想要实现的是找到所有具有属性名称的dom节点 data-validate-

据我所知,这里描述的通配符与属性的"值"有关.

原因是 - 我想知道哪些元素应该被验证 - 然后找出哪些验证参数(如-email)发挥作用.

谢谢

pim*_*vdb 5

您可以创建一个自定义伪类,例如将属性名称与正则表达式匹配:http://jsfiddle.net/hN6vx/.

jQuery.expr.pseudos.attr = $.expr.createPseudo(function(arg) {
    var regexp = new RegExp(arg);
    return function(elem) {
        for(var i = 0; i < elem.attributes.length; i++) {
            var attr = elem.attributes[i];
            if(regexp.test(attr.name)) {
                return true;
            }
        }
        return false;
    };
});
Run Code Online (Sandbox Code Playgroud)

用法:

$(":attr('^data-')")
Run Code Online (Sandbox Code Playgroud)