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?
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"))
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')
$('div[class*="project"]')
wird mit so etwas nicht scheitern:
<div class="some-other-class project1"></div>
$('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