我試圖找到解決方案來搜索DOM中包含的文本字符串「Tony」,並用文本字符串「Tiger」替換它。如何查找文本並使用jQuery替換
任何人都有任何見解或想法如何做到這一點?我猜它會採取每個語句加上一個替換函數,並可能包含?
感謝 傑克
我試圖找到解決方案來搜索DOM中包含的文本字符串「Tony」,並用文本字符串「Tiger」替換它。如何查找文本並使用jQuery替換
任何人都有任何見解或想法如何做到這一點?我猜它會採取每個語句加上一個替換函數,並可能包含?
感謝 傑克
你可以使用這個搜索body元素的所有兒童和替換文本...
$('body').children().each(function(){$(this).text($(this).text().replace('Tony','Tiger'))});
它使用jQuery的。它也應該只改變元素和沒有HTML格式的文本內容...
您也可以使用這種方法,它使用一個RegExp,並會得到所有嵌套的元素:
$('body').html($('body').html().replace(/Tony/gi,'tiger'));
這不起作用,因爲'children()'不會遞歸搜索DOM - 它只會給你直接的孩子。 – 2010-12-15 23:14:43
它不工作在我的網頁上:http://www.laithwaiteswine.com $('。container')。children()。each(function(){$(this).text($(this).text() .replace('Laithwaites','Tiger'))}); - 這是刪除所有的DOM或打破它。 – jrutter 2010-12-16 00:04:08
@jrutter:不知道爲什麼沒有看到你的代碼發生在你身上。然而,我用另一個使用RegExp方法解決了我的解決方案---> $('body')。html($('body')。html()。replace(/ Tony/gi,'tiger') ); – exoboy 2010-12-16 00:18:11
頁寬,你可以使用這樣的事情:
var $body = $('body');
var html = $body.html();
var newHtml = html.replace('Tony', 'Tiger');
$body.html(newHtml);
或者,如果你有一個更具體的容器,使用jQuery選擇子容器和做同樣的事情。
無論哪種方式,這是一種霰彈槍的方法。它將更改可見文本和html元素屬性中的字符串。如果字符串需要在某些位置被忽略,則可能需要更詳細的方法。
這不是工作,整個頁面重新加載。 – jrutter 2010-12-16 00:01:16
是否有可能將其與服務器端解決方案相結合?你可以用一個特殊的類來包裝服務器端的每一個字,例如<span class="replaceme">texttoreplace</span>
。
僅在生成的類上運行javascript替換纔會加快速度。
+1肯定比搜索DOM文本好多了。 – 2010-12-15 23:18:51
如果這是一種可能性,爲什麼他不替換服務器端的字符串呢?添加不必要的dom元素似乎過多 – ximi 2012-05-31 05:54:20
請詳細說明。你對DOM中的_where_有任何想法嗎?你是否想用'老虎'來替換'Tony'的出現?無論它出現在哪裏? – 2010-12-15 22:29:15
你是否爲那個html容器?或者直接取代所有 – kobe 2010-12-15 22:31:30
是的,我想用「Tiger」替換「Tony」的每一個出現位置 - 它所在的DOM所在的位置 - 可能必須在.container元素中。 – jrutter 2010-12-15 22:35:06