Селектор регулярных выражений jquery

Я хочу выбрать некоторые элементы html с именем, начинающимся с btn (btn1, btn2..)

что наиболее эффективный способ сделать это

Я пытаюсь http://james.padolsey.com/javascript/regex-selector-for-jquery/, но не могу заставить его работать.

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

// not selecting any "btn" class

}

Ответы

Ответ 1

Если вы хотите выбрать все элементы с атрибутом class, который начинается со слова btn:

$( '[class^=btn]' )

Если вы хотите вместо этого использовать атрибут name, просто замените атрибут:

$( '[name^=btn]' )

Использование значения атрибута начинается с селектора: http://api.jquery.com/attribute-starts-with-selector/

Ответ 2

Что вы делаете, это выбрать все элементы с классом btnX, где X может быть 0-9.

Чтобы сделать это с атрибутом name, начинающимся с "btn", вам нужно использовать:

$(':regex(name,^btn)').hover(function() { ... }, function() { ... });

- EDIT включить рабочий jsFiddle demo -

Кроме того, не забудьте поставить это на свою страницу:

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));
}

Ответ 3

Я сомневаюсь, что regex - самый эффективный способ сделать это, но добавили ли вы селектор регулярных выражений в свой код? :regex не является встроенным селектором, поэтому вам нужно включить фрагмент в верхней части статьи в script.