2010-10-30 58 views
2

我有一个函数,它读取元素的内容,用链接替换一个单词,然后将内容重写回元素。显然这意味着之前设置的所有事件都会丢失。查找并替换元素的内容而不会丢失事件

有谁知道一个函数/方法可以找到并替换元素的内容而不会丢失事件?

编辑:如果不使用库

这里是我当前的代码,不破坏事件,而是变成<,例如,为&lt;,所以我不能追加HTML。这是我得到的最接近:

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

我原来的代码工作,但摆脱了事件:

element.innerHTML += content; 
+0

看到代码将有所帮助。 – Saul 2010-10-30 17:15:08

+0

好的抱歉,在新的编辑 – Olical 2010-10-30 17:21:03

+0

那么如何将包含可替换文本的部分用单独的标签进行包装并将其与需要保留其事件的周围元素隔离? – Saul 2010-10-30 17:33:42

回答

5

使用jQuery,你可以用text()方法

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

编辑:

另一个选项是innerHTML属性。它不是很优雅,但仍然有效。

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

EDIT2:

另一种办法是包你想单独的标签内替换文本,例如<span>

<div id="container"> 
    <a id="link-with-events">Link</a> 
    <span id="replaceable">The Text Gets Replaced</span> 
    <a id="more-links-with-events">Another Link</a> 
</div> 

然后,您只需访问并替换span标签的内容,而不改变周围的元素。

+0

那么问题是我正在编写一个库,所以我不想使用jQuery,所以你知道任何find + replace方法,不涉及销毁事件监听器吗? – Olical 2010-10-30 16:58:33

+0

你是指含有元素的事件吗?还是你指的是内容中定义的事件被替换? – Saul 2010-10-30 17:04:51

+0

我不明白使用'innerHTML'属性会有什么不好的地方。 – 2010-10-30 17:05:31

相关问题