2010-10-30 5 views
2

J'ai une fonction qui lit le contenu d'un élément, remplace un mot par un lien, puis réécrit le contenu dans l'élément. Évidemment, cela signifie que tous les événements précédemment définis sont perdus.Rechercher + remplacer le contenu d'un élément sans perdre d'événements

Est-ce que quelqu'un connaît une fonction/méthode qui pourrait trouver et remplacer le contenu d'un élément sans perdre les événements?

Edit: Sans utiliser une bibliothèque

Voici mon code actuel qui ne détruit pas les événements mais se <, par exemple, en &lt;, donc je ne peux pas ajouter HTML. Ceci est le plus proche j'ai:

element.appendChild(document.createTextNode(content)); 

Mon code d'origine a travaillé, mais débarrassé des événements:

element.innerHTML += content; 
+0

Voir le code aiderait. – Saul

+0

Ok désolé dans la nouvelle édition – Olical

+0

Qu'en est-il de l'encapsulation de la section contenant du texte remplaçable avec une étiquette distincte et de l'isoler des éléments environnants dont les événements doivent être conservés? – Saul

Répondre

5

En utilisant jQuery, vous pouvez le faire avec la méthode text()

var str = $('#element-id').text(); 
str = yourReplaceFunction(str); 
$('#element-id').text(str); 

Editer:

Une autre option serait la propriété innerHTML. Ce n'est pas très élégant mais ça marche quand même.

var strElem = document.getElementById('element-id'); 
var str = strElem.innerHTML; 
str = yourReplaceFunction(str); 
strElem.innerHTML = str; 

Edit2:

Une autre option serait d'envelopper le texte que vous voulez remplacer l'intérieur d'une étiquette séparée, par exemple <span>. Ensuite, il vous suffit d'accéder au contenu de la balise span et de le remplacer, sans toucher aux éléments environnants.

+0

Eh bien le problème est que j'écris une bibliothèque donc je ne veux pas utiliser jQuery, alors connaissez-vous des méthodes de trouver + remplacer qui n'impliquent pas de détruire les écouteurs d'événements? – Olical

+0

Voulez-vous dire les événements sur l'élément contenant? Ou faites-vous référence à des événements définis dans le contenu à remplacer? – Saul

+0

Je ne vois pas ce qui est si inélégant avec l'utilisation de la propriété 'innerHTML'. –

Questions connexes