У меня есть несколько классов
.text-1
.text-2
.text-3
Я хочу выбрать их все, как это сделать? Спасибо за помощь
У меня есть несколько классов
.text-1
.text-2
.text-3
Я хочу выбрать их все, как это сделать? Спасибо за помощь
Попробуйте это. Для получения дополнительной информации см. jquery selectors
$('*[class^="text"]')
Здесь попытка решения, которая является точной и не слишком медленной:
var elts = $('*[class*="text-"]')
.filter(function () {
return this.className.match(/(?:^|\s)text-/);
});
Что работает, используя (надеемся) быстрый код Sizzle для поиска элементов, которые имеют "текст" в любом месте своего атрибута class
, а затем вызывает функцию на каждом из них, чтобы отфильтровать их до тех, которые на самом деле имеют "text-" в начале имени класса.
Вам не обязательно указывать звездочку *
, вы можете сделать это тоже:
$('[class^="text-"]')
Обратите внимание на добавление -
после text
того, что вы ищете.
Подробнее о jQuery начинается с селектора.
Вы можете сделать это с помощью всего двух селекторов в одном вызове функции:
$('[class^="text-"], [class*=" text-"]')
Это проверит, начинается ли атрибут класса с text-
или есть ли какая-либо часть строки класса с пробелом, за которой следует text-
. Это решает любые проблемы, которые могут возникнуть у вас с
$('[class^="text-"], [class*=" text-"]')
.css('background-color', '#00FF00'); // add background color for demo
/* just for demo */
div:after {
content: "class: " attr(class);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="text-1 test"></div>
<div class="text some-text-1"></div>
<div class="nope text-long-class-name"></div>
<div class="some-text-1"></div>
<div class="even get text-n-here"></div>
Здесь функция, которая имеет дело с проблемой нескольких классов, в таких случаях, как <div class="foo bar barfood">
:
function classStartsWith(str) {
return $('div').map( function(i,e) {
var classes = e.className.split(' ');
for (var i=0, j=classes.length; i < j; i++) {
if (classes[i].substr(0, str.length) == str) return e;
}
}).get();
}
Функция возвращает массив соответствующих элементов DOM. Вы можете использовать его таким образом:
$( classStartsWith('text-') ).doSomething();
Вот пример: http://www.jsfiddle.net/Ms6ey/3/
Конечно, это предполагает селектор 'div'
. Кажется, вопрос задает вопрос о каком-либо элементе вообще. Достаточно легко сделать функцию селектором в качестве другого аргумента и использовать это вместо жестко закодированного в примере.
$('#qvDetails,#qvAdd,.qvFramedActive,#qvMoreSizes').live('mouseover',function(){
$(this).addClass('qvHover');
});
из одного из моих проектов. Вы можете указать как divs, так и классы вместе, как указано выше
вы можете предоставить как класс, разделенный комой, так и divs в том же...