wake-up-neo.net

jQuery passt einen Teil der Klasse mit hasClass an

Ich habe mehrere Div's mit "Projekt [0-9]" Klassen:

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

Ich möchte prüfen, ob das Element eine Klasse "Projekt [0-9]" hat. Ich habe .hasClass("project"), aber ich stecke mit übereinstimmenden Zahlen fest.

Irgendeine Idee? 

29
ditto

Sie können den startswith mit CSS3-Selektor verwenden, um diese Divs abzurufen:

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

Um ein bestimmtes Element zu überprüfen, verwenden Sie .is() , nicht hasClass:

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

Um den genauen /project\d/ regex zu verwenden, können Sie die regulären Ausdrücke des jQuery-Selektors auschecken oder verwenden

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

Ein besserer Ansatz für Ihre HTML-Datei wäre: Ich glaube, diese Divs haben einige gemeinsame Eigenschaften.

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

Dann können Sie sie finden mit:

$('.project')
11
Akhil Sekharan
$('div[class*="project"]')

wird mit so etwas nicht scheitern:

<div class="some-other-class project1"></div>
7
migli
$('div[class^="project"]')

wird mit so etwas scheitern:

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

Hier ist eine Alternative, die jQuery erweitert:

// Select elements by testing each value of each element's 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]')

original von Sandinmyjoints: https://github.com/sandinmyjoints/jquery-has-attr-like/blob/master/jquery.hasAttrLike.js

0
Douglas.Sesar