jquery:找到一个字符串并将其包装在标签中?
我有这个:
我需要做一个等效的.find()
但是对于字符串"click here"
而不是节点,我需要将它包装在标签中。
什么是jquery的最佳方法?
使用:contains
filter选择器:
$('p.hidden:contains("click here")')
将其包装在链接中:
$('p.hidden:contains("click here")').html() .replace('click here', 'click here');
要在链接中包装整个文本:
$('p.hidden:contains("click here")') .html('' + $('p.hidden:contains("click here")').text() + '');
更多信息:
不要使用HTML字符串黑客。 想象一下如果你试图用标签替换
...
会发生什么……大量破坏标记。 这只是问题的开始。
相反,迭代要检查的文档部分中的文本节点,查找文本匹配并使用DOM样式方法插入新链接。
jQuery在这里并没有真正帮助你,因为它没有处理文本节点的function。 相反,使用类似此问题的findText()
函数,并使用splitText
拆分文本节点:
findText($('#fancy_hover')[0], /\bClick here\b/gi, function(node, match) { node.splitText(match.index+match[0].length); var link= document.createElement('a'); link.href= 'http://www.example.com/'; link.appendChild(node.splitText(match.index)); node.parentNode.insertBefore(link, node.nextSibling); });