jquery正则表达式选择器

Nic*_* AD 15 regex jquery jquery-selectors

我想选择一些名称以btn开头的html元素(btn1,btn2 ..)

什么是最有效的方法

我尝试http://james.padolsey.com/javascript/regex-selector-for-jquery/但是没有设法让它工作

$(':regex(class,btn[0-9]').hover( function(){

// not selecting any "btn" class

}
Run Code Online (Sandbox Code Playgroud)

Eli*_*Eli 30

如果要选择class具有以单词开头的属性的所有元素btn:

$( '[class^=btn]' )
Run Code Online (Sandbox Code Playgroud)

如果您想要使用该name属性,只需换出该属性:

$( '[name^=btn]' )
Run Code Online (Sandbox Code Playgroud)

使用属性值starts-with selector:http://api.jquery.com/attribute-starts-with-selector/


Cod*_*ick 5

你正在做的是选择btnX类的所有元素,其中X可以是0-9.

要使用以"btn"开头的name属性执行此操作,您需要使用:

$(':regex(name,^btn)').hover(function() { ... }, function() { ... });
Run Code Online (Sandbox Code Playgroud)

- 编辑包括工作jsFiddle演示 -

此外,不要忘记把它放在你的页面上:

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));
}
Run Code Online (Sandbox Code Playgroud)