在jquery中有任何文本选择器吗?

在jquery中有任何文本选择器吗?

我的代码

Hello World! Hello World! 

Reslut应该是(使用Jquery)

 Hello World! Hello World! 

 $('anything').html(function(i, v) { return v.replace(/(World)/g, '$1'); }); 

上面的代码片段使用了jQuery 1.4中添加的function。

注意:此解决方案对于仅包含原始文本(并且没有子元素)的元素是安全的。

不.jQuery主要使用元素,并且几乎不会处理文本。

要对文本执行查找和替换,您需要单独检查每个文本节点,并在找到匹配项时执行DOM splitText操作以将其拆分。 例如:

 function findText(element, pattern, callback) { for (var childi= element.childNodes.length; childi-->0;) { var child= element.childNodes[childi]; if (child.nodeType==1) { var tag= child.tagName.toLowerCase(); if (tag!=='script' && tag!=='style' && tag!=='textarea') findText(child, pattern, callback); } else if (child.nodeType==3) { var matches= []; var match; while (match= pattern.exec(child.data)) matches.push(match); for (var i= matches.length; i-->0;) callback.call(window, child, matches[i]); } } } findText(element, /\bWorld\b/g, function(node, match) { var span= document.createElement('span'); node.splitText(match.index+match[0].length); span.appendChild(node.splitText(match.index)); node.parentNode.insertBefore(span, node.nextSibling); }); 

你可以为你的简单案例做一个正则表达式替换等,但是对于更一般的答案:

jQuery只是在处理文本节点时没有提供太多帮助,它主要用于处理元素节点类型( nodeType == 1 ),而不是文本节点类型( nodeType == 3 )…所以是的你可以在哪里使用它它有帮助(例如.contents().filter() ),但这并不常见,因为它不是图书馆的主要目的。