2010-09-30 5 views
1

J'ai un problème avec html().replace:problème .replace

<script type="text/javascript"> 
    jQuery(function() { 
    jQuery(".post_meta_front").html(jQuery(".post_meta_front").html().replace(/\<p>Beschreibung:</p> /g, '<span></span>')); 
}); 
</script> 

ce qui ne va pas dans mon script?

+0

Il serait bon que vous avez décrit ce que le problème est. Et posté votre HTML ou au moins un extrait court. – Strelok

+0

besoin de citations autour de la regex peut-être? – Ascherer

Répondre

0

Il semble que vous n'échappiez pas à tous les caractères spéciaux du paramètre find de la fonction de remplacement. Vous échappez seulement au premier personnage <.

Essayez quelque chose comme:

/\<p\>Beschreibung:\<\/p\>/g 

Notez que remplacer est une fonction javascript jQuery pas.

+0

Thansk Damovisa. Tu avais raison. – chris

1

Vous devez échapper les barres obliques / dans la partie regex.

<script type="text/javascript"> 
    jQuery(function() { 
    jQuery(".post_meta_front").html(jQuery(".post_meta_front").html().replace(/<p>Beschreibung:<\/p> /g, '<span></span>')); 
}); 
</script> 
4

Pourquoi utilisez-vous regex pour cela? Si vous souhaitez remplacer un élément par un autre, vous pouvez utiliser jQuery's .replaceWith() method.

jQuery(".post_meta_front p:contains('Beschreibung:')") 
               .replaceWith('<span></span>'); 

Ou si vous devez vous assurer une correspondance exacte sur le contenu:

jQuery(".post_meta_front p").filter(function() { 
    return $.text([ this ]) === 'Beschreibung:'; 
}).replaceWith('<span></span>'); 
+2

+1. S'appuyer sur le format de la sortie de 'html()' est déconseillé (différents navigateurs donneront un échappement de texte différent, un cas d'élément et une mise en forme de l'attribut). L'utilisation de méthodes de type DOM comme celle-ci est plus fiable et ne détruit et ne recrée pas inutilement tous les autres nœuds que vous ne remplacez pas. – bobince

Questions connexes