J'utilise actuellement ceci pour obtenir la classe pour un morceau spécifique de HTML sur la page:
$(this).parent("div").attr('class')
Mais que div
a plusieurs classes: current_status status_billed
Mon objectif final ici est de récupérer la classe qui commence par status_
Et de la remplacer par un nom de classe différent.
Donc, en utilisant ma fonction .parent()
ci-dessus, je peux sélectionner le div dont j'ai besoin, mais je dois ensuite supprimer la classe status_billed
Et la remplacer par, par exemple, status_completed
(ou un certain nombre d'autres noms de classe).
Sélectionnez div
s qui ont la classe status_billed
:
$(this).parent('div.status_billed')
Sélectionnez div
s dont l'attribut class
contient status_
:
$(this).parent('div[class*=status_]')
C'est à peu près le meilleur que vous obtiendrez avec sélecteurs jQuery . Vous pouvez faire mieux en utilisant .filter()
:
$(this).parent('div').filter(function ()
{
var classes = $(this).attr('class').split(' ');
for (var i=0; i<classes.length; i++)
{
if (classes[i].slice(0,7) === 'status_')
{
return true;
}
}
return false;
});
... mais je ne sais pas pourquoi vous faites tout cela - .parent()
renvoie au plus 1 élément. Vouliez-vous dire .closest()
ou .parents()
?