在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()
),但这并不常见,因为它不是图书馆的主要目的。