Вам придется искать текстовые узлы в вашем документе, я использую рекурсивную функцию, подобную этой:
function replaceText(oldText, newText, node){
node = node || document.body; // base node
var childs = node.childNodes, i = 0;
while(node = childs[i]){
if (node.nodeType == 3){ // text node found, do the replacement
if (node.textContent) {
node.textContent = node.textContent.replace(oldText, newText);
} else { // support to IE
node.nodeValue = node.nodeValue.replace(oldText, newText);
}
} else { // not a text mode, look forward
replaceText(oldText, newText, node);
}
i++;
}
}
Если вы сделаете это таким образом, ваша разметка и обработчики событий останутся без изменений.
Редактировать: Изменен код для поддержки IE, так как текстовые узлы в IE не имеют свойства textContent , в IE вы должны использовать свойство nodeValue и он также не реализует интерфейс Node .
Проверьте пример здесь .