2009-09-04 4 views
1

J'ai un certain nombre d'attributs CSS et de classes qui s'appliquent en fonction de l'endroit où l'élément apparaît dans le code HTML.Vérification de l'arrière-plan en CSS

Cependant, certains éléments ne correspondent à aucune de ces valeurs, donc je veux être en mesure de vérifier quels éléments dans un DIV n'ont pas d'arrière-plan défini par CSS, puis appliquer un arrière-plan.

Quelque chose comme:

$('.divclass:has('background')').addClass('IneedaBG.gif'); 

Ou

$('.divclass:has(not:class1,class2,class2)').addClass('IneedaBG.gif'); 

Répondre

1

Je ne suis pas sûr que les noms de classe peuvent avoir un point (IneedaBG.gif). Imaginez si vous avez essayé de sélectionner ceci avec un sélecteur:

$(".IneedaBG.gif") 

Je suis sûr que cela ne fonctionnerait pas. Est-il possible que vous vouliez une classe CSS avec l'image définie dans les propriétés?

En outre, vous pouvez accélérer votre performance de sélection un peu, comme référence directe à la classe .divclass va scanner l'ensemble DOM:

$("div.divclass:has('background')").addClass("IneedaBG"); 

Essayez également d'utiliser "pour les sélecteurs, au lieu d'avoir plusieurs '

Pouvez-vous avoir un ID pour le DIV? Ce serait encore mieux!

1

Essayez filtrer les éléments qui ne sont pas un ensemble d'arrière-plan (soit dans les feuilles ou en ligne, jquery attrape les deux), puis ajoutez votre classe à seulement ces éléments:

$('.divclass') 
    .filter(function() { return $(this).css('background-image') }) 
    .addClass('IneedaBG') 
0

Essayez ceci:

$('.divclass').each(function() 
{ 
    if($(this).css('background') != '') $(this).addClass('Bgclass'); 
}); 

Votre code

$('.divclass:has('background')').addClass('IneedaBG.gif'); 

ne fonctionnera pas: il suffit de regarder à la mise en valeur des couleurs. Les guillemets doivent être "" ou ``. En outre :has est des éléments éléments containg: a:has(b) signifie « Sélectionner tous les éléments a contenant au moins un élément b »