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

JQuery соответствует части класса с hasClass

У меня есть несколько div с "project [0-9]" classes:

<div class="project1"></div>
<div class="project2"></div>
<div class="project3"></div>
<div class="project4"></div>

Я хочу проверить, имеет ли элемент класс "[0-9]". У меня .hasClass("project"), но я застрял с соответствующими номерами.

Любая идея?

4b9b3361

Ответ 1

Вы можете использовать startswith селектор CSS3, чтобы получить эти divs:

$('div[class^="project"]')

Чтобы проверить один конкретный элемент, вы должны использовать .is(), а не hasClass:

$el.is('[class^="project"]')

Для использования точного выражения /project\d/ вы можете проверить регулярные выражения селектора jQuery или использовать

/(^|\s)project\d(\s|$)/.test($el.attr("class"))

Ответ 2

Лучшим подходом для вашего html будет: Я считаю, что эти div имеют некоторые общие свойства.

<div class="project type1"></div>
<div class="project type2"></div>
<div class="project type3"></div>
<div class="project type4"></div>

Затем вы можете найти их, используя:

$('.project')

Ответ 3

$('div[class*="project"]')

не сработает с чем-то вроде этого:

<div class="some-other-class project1"></div>

Ответ 4

$('div[class^="project"]')

не удастся с чем-то вроде этого:

<div class="some-other-class project1"></div>

Вот альтернатива, которая расширяет jQuery:

// Select elements by testing each value of each element attribute `attr` for `pattern`.

  jQuery.fn.hasAttrLike = function(attr, pattern) {

    pattern = new RegExp(pattern)
    return this.filter(function(idx) {
      var elAttr = $(this).attr(attr);
      if(!elAttr) return false;
      var values = elAttr.split(/\s/);
      var hasAttrLike = false;
      $.each(values, function(idx, value) {
        if(pattern.test(value)) {
          hasAttrLike = true;
          return false;
        }
        return true;
      });
      return hasAttrLike;
    });
  };



jQuery('div').hasAttrLike('class', 'project[0-9]')

оригинал от sandinmyjoints: https://github.com/sandinmyjoints/jquery-has-attr-like/blob/master/jquery.hasAttrLike.js (но у меня были ошибки, поэтому я исправил их)

Ответ 5

почему вы не используете для проверки номеров

for (var i = 0; i < 10; i++) {
                if(....hasClass("project"+i))
                {
            //do what you need
                }
            }