-1
我想要替換TinyMCE增強的輸入字段中的文本的所有出現次數,每當用戶按下空格鍵(類似於Word中的自動更正功能)時,都會發生這種情況。如何過濾特定標籤內的匹配項?
我遇到的問題是當替換的字符串包含觸發器時,它會一直替換它。 例如與
<span class="replaced">hello world</span>
更換「你好」這將再次取代它成爲
<span class="replaced"><span class="replaced">hello world</span> world</span>
所以我必須寫一個正則表達式來過濾出文本已經被替換匹配。
你能幫我嗎?
這是我當前的代碼:
for (r in autocorrect_replacements) {
if (newHtml.indexOf(autocorrect_replacements[r][0]) > -1) {
replacement_html = '<span class="replaced">'+autocorrect_replacements[r][1] + '</span>';
newHtml = newHtml.replace(autocorrect_replacements[r][0],replacement_html);
ed.setContent(newHtml);
}
我不是正則表達式的粉絲,但我認爲這是在這種情況下,正確的解決方案。
你有沒有考慮使用像jQuery的文檔模型的解析,而不是正則表達式? – Amber
假設我做了類似於dom ='$(ed.getContent())的操作;'每次用戶按下空格鍵時,都會使用jQuery解析所有的東西,並且假設它不像地獄一樣慢,我會得到什麼,現在我有在DOM中搜索所有不是'.replaced'的字符串並在其中應用替換,如:'dom.find(「:not [.replaced]」)',然後迭代替換... 它可能會起作用,但我擔心它對長文本和大量替換不夠好。 – martinszy
RegExp是錯誤的解決方案,jQuery對操縱文本節點並不是很有幫助。您應該走DOM,並在每個文本節點上進行替換。有關StackOverflow的大量問題可以解決這個問題。不管你做什麼,停止做你正在做的一攬子HTML替換。 – user113716