2010-11-12 3 views

Répondre

54

Essayez ceci. Pour plus de détails, voir jquery selectors

$('*[class^="text"]') 
+7

L'attribut class prend une liste séparée par des espaces des classes; cela échouera sur 'class =" foo text-1 bar "' – Quentin

+8

Ensuite, nous pouvons utiliser $ ('* [class * = "text"]'). ceci recherchera le texte en tant que sous-chaîne dans l'attribut class. Ref: http://api.jquery.com/attribute-contains-selector/ –

+5

@Chinmayee Cela va correspondre à tort quelque chose comme «sometext» – Phil

-4
$('#qvDetails,#qvAdd,.qvFramedActive,#qvMoreSizes').live('mouseover',function(){ 

     $(this).addClass('qvHover');                    

    }); 

exemple d'un de mes projects.you peut citer les deux divs et les classes ensemble comme ci-dessus

vous pouvez fournir en classe séparée de coma ou divs dans le même ...

+0

J'ai donné l'exemple ci-dessus si vous voulez donner plusieurs classes ou ids ensemble quand il n'y a pas de motif – kobe

+0

ce qui est faux avec le code ci-dessus, il n'a pas mentionné qu'il veut un motif correct – kobe

0

Voici une fonction qui traite de la question de plusieurs classes, dans des cas comme <div class="foo bar barfood">:

function classStartsWith(str) { 
    return $('div').map(function(i,e) { 
    var classes = e.className.split(' '); 
    for (var i=0, j=classes.length; i < j; i++) { 
     if (classes[i].substr(0, str.length) == str) return e; 
    } 
    }).get(); 
} 

La fonction retourne un tableau de correspondance des éléments DOM. Vous pouvez l'utiliser ainsi:

$(classStartsWith('text-')).doSomething(); 

Voici un exemple: http://www.jsfiddle.net/Ms6ey/3/

Bien sûr, cela suppose que le sélecteur 'div'. La question semble concerner n'importe quel élément. Il est assez facile de faire en sorte que la fonction prenne un sélecteur comme un autre argument, et l'utilise à la place du codé en dur dans l'exemple.

2

Vous ne devez pas nécessairement spécifier astérisque *, vous pouvez le faire aussi:

$('[class^="text-"]') 

Notez l'ajout de - après text quelque chose que vous recherchez. Pour plus d'informations, consultez le jQuery starts with selector.

13

est ici une tentative d'une solution qui est à la fois précis et pas trop lent:

var elts = $('*[class*="text-"]') 
    .filter(function() { 
    return this.className.match(/(?:^|\s)text-/); 
    }); 

qui fonctionne en utilisant le (je l'espère) code Sizzle rapide pour trouver des éléments qui ont « texte- » partout dans leur class attribut , puis appelle une fonction sur chacun d'eux pour les filtrer vers ceux qui ont réellement "text-" au début d'un nom de classe.

+0

+1 Bonne réponse. En outre, c'est plus rapide que la solution que j'avais, qui utilisait jQuery pour obtenir les noms des classes. Bon travail. –

+0

Ceci est la bonne réponse! – Ejaz

Questions connexes