![](/img/trans.png)
[英]How to change sibling text of element without changing html using jQuery?
[英]Change the color of one character using JQuery without changing HTML tags
我正在嘗試使用JQuery遍歷DOM,並且我想更改字母m的每個實例的顏色。 這是我到目前為止所擁有的:
$(document).ready(function(){
var m = "<span style='color: red;'>m</span>"
$("body").children().each(function() {
$(this).html($(this).html().replace(/m/g, m));
});
});
問題在於它還會修改html元素,例如<href>
和<img>
我嘗試使用
if (!$(this).is("a")) { //replace }
但這沒用。 還使用.text()而不是.html()對我不起作用
要實現所需的功能,您需要具有遞歸功能。 在該函數中,您必須檢查元素是否為文本節點。 一旦有了文本節點,就可以替換其內容。 否則,您需要使用new元素調用相同的函數。
這里說的功能:
letterScanner( $('body'), 'm' )
function letterScanner( $el, letter ){
$el.contents().each( function(){
if( this.nodeType == 3 ){
$( this ).replaceWith( this.textContent.replace( new RegExp( '('+letter+'+)', 'g' ), "<span style='color: red;'>$1</span>" ) );
}else{
letterScanner( $( this ), letter )
}
} );
}
當然,請更改最接近的父級的body
選擇器以獲得更好的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.