Подтвердить что ты не робот

Jquery, как выбрать все элементы класса, начинающиеся с "text-"?

У меня есть несколько классов

.text-1
.text-2
.text-3

Я хочу выбрать их все, как это сделать? Спасибо за помощь

4b9b3361

Ответ 1

Попробуйте это. Для получения дополнительной информации см. jquery selectors

$('*[class^="text"]')

Ответ 2

Здесь попытка решения, которая является точной и не слишком медленной:

var elts = $('*[class*="text-"]')
  .filter(function () {
    return this.className.match(/(?:^|\s)text-/);
  });

Что работает, используя (надеемся) быстрый код Sizzle для поиска элементов, которые имеют "текст" в любом месте своего атрибута class, а затем вызывает функцию на каждом из них, чтобы отфильтровать их до тех, которые на самом деле имеют "text-" в начале имени класса.

Ответ 3

Вам не обязательно указывать звездочку *, вы можете сделать это тоже:

$('[class^="text-"]')

Обратите внимание на добавление - после text того, что вы ищете.

Подробнее о jQuery начинается с селектора.

Ответ 4

Вы можете сделать это с помощью всего двух селекторов в одном вызове функции:

$('[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>

Ответ 5

Здесь функция, которая имеет дело с проблемой нескольких классов, в таких случаях, как <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'. Кажется, вопрос задает вопрос о каком-либо элементе вообще. Достаточно легко сделать функцию селектором в качестве другого аргумента и использовать это вместо жестко закодированного в примере.

Ответ 6

$('#qvDetails,#qvAdd,.qvFramedActive,#qvMoreSizes').live('mouseover',function(){

        $(this).addClass('qvHover');                                                                            

    });

из одного из моих проектов. Вы можете указать как divs, так и классы вместе, как указано выше

вы можете предоставить как класс, разделенный комой, так и divs в том же...