Селектор регулярных выражений 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.