2013-04-25 10 views
5

Ich habe ein dynamisches div, das über 1000 verschiedene Klassen generieren kann ... es ist ein Wordpress-Thema.Wie überprüft man, ob ein div eine Klasse aus mehreren Klassen in jquery hat

Jetzt möchte ich überprüfen, ob ein Div eine von 52 Klassen hat.

.bg1, .bg2, .bg3 etc etc ...

Ich weiß, dass Sie hasClass verwenden können();

Aber wie überprüfe ich für jeden und dann den Wert. Zum Beispiel ist hier die div wie es

<div id="wordpresspost" class="bodyclass post-id-193 wordpresswrap bg1"></div> 

Bitte daran denkt, steht weiß nicht, ich wirklich jquery: D

Ich dachte es so etwas wie dieses wäre aber logisch ist dies nicht Sinn für mich: (

var divclass = $("#wordpresspost").hasClass('bg1, bg2, bg3, bg4, bg5, bg6'); 

if(divclass == true){ 
    var divsclass = $(this); 
} 

ich brauche die Klasse zu wissen, weil ich es ändern will, zum Beispiel würde ich auf .removeClass mag und addClass dann eine neue Klasse, ohne die andere zu ändern, da sie dynamisch sind

Vielen Dank im Voraus für den Ratschlag :)

+0

ich tun würde, wenn '(elem.className.seach (re)> -1) {...' –

Antwort

4

Sie können starts with Selektor verwenden.

Caveat dabei ist, dass, wenn Sie eine andere Klasse beginnt mit bg [etwas] wäre es

if($("#wordpresspost[class^=bg]").length > 0) 
{ 
.... 
} 

Um betroffen sein, es zu entfernen wahrscheinlich regex helfen könnte.

$("#wordpresspost[class^=bg]").each(function(){ 
    this.className = this.className.replace(/\bbg.*?\b/g, 'newclass'); 
}); 
+2

Und wenn es hat die Klasse "bgColorBlue", es wird versagen. – Ian

+0

@PSCoder Ich muss die Klasse kennen, weil ich sie ändern möchte, zum Beispiel möchte ich .removeClass und dann addClass eine neue Klasse hinzufügen, ohne die anderen zu ändern, da sie dynamisch sind – Robert

+0

@Ian ich stimme dir zu ... – PSL

13

Verwendung .is():

var divclass = $("#wordpresspost").is('.bg1, .bg2, .bg3, .bg4, .bg5, .bg6'); 
-1

Wenn Sie bg * suchen nur in einem Element, könnte man nur einfache regex verwenden.

var hasBg = /bg[\d]+/.test(document.getElementById("mydiv").className); 
0
var el = document.getElementById('wordpresspost'); 
var regxpr = /\b(bg(?:[1-9]|[1-4]\d|5[0-2]))\b/g, match; 
while(match = regxpr.exec(el.className)){ 
    // match[1] contains the current matching class 
    console.log(match[1]); 
    // Then you can do: 
     $(el).removeClass(match[1]).addClass(replacementForMatch); 
} 

JSFiddle

Verwandte Themen