JQuery регулярных выражений селектор - PullRequest
15 голосов
/ 20 апреля 2011

Я хочу выбрать некоторые 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

}

Ответы [ 3 ]

30 голосов
/ 20 апреля 2011

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

$( '[class^=btn]' )

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

$( '[name^=btn]' )

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

5 голосов
/ 20 апреля 2011

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

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

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

- РЕДАКТИРОВАТЬ, чтобы включить рабочую демоверсию 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));
}
1 голос
/ 20 апреля 2011

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

...