web-dev-qa-db-fra.com

partie jQuery de la classe avec hasClass

J'ai plusieurs div avec les classes "projet [0-9]":

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

Je veux vérifier si l'élément a une classe "projet [0-9]". J'ai .hasClass("project") mais je suis coincé avec les numéros correspondants.

Une idée? 

29
ditto

Vous pouvez utiliser le sélecteur startswith CSS3 pour obtenir ces divs:

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

Pour vérifier un élément particulier, vous utiliseriez .is() , not hasClass:

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

Pour utiliser la regex exacte /project\d/, vous pouvez consulter les expressions régulières du sélecteur jQuery ou utiliser

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

Une meilleure approche pour votre html serait: Je crois que ces div partagent certaines propriétés communes.

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

Ensuite, vous pouvez les trouver en utilisant:

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

ne manquera pas avec quelque chose comme ça:

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

va échouer avec quelque chose comme ça:

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

Voici une alternative qui étend jQuery:

// 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 provenant de sandinmyjoints: https://github.com/sandinmyjoints/jquery-has-attr-like/blob/master/jquery.hasAttrLike.js

0
Douglas.Sesar