使用 jQuery 选择文本节点
使用 jQuery 选择元素的后代文本节点需要一点创造力。虽然 jQuery 没有为此任务提供特定的函数,但可以结合使用 content() 和 find() 方法来实现所需的结果。
jQuery 解决方案
var getTextNodesIn = function(el) { return $(el).find(":not(iframe)").addBack().contents().filter(function() { return this.nodeType == 3; }); }; getTextNodesIn(el);
此代码使用contents()收集子节点,包括文本节点。然后,它使用 find() 隔离后代元素和文本节点。请注意,此解决方案需要对 iframe 元素进行特殊处理。
纯 JavaScript 解决方案
如果您更喜欢纯 JavaScript 方法,可以使用以下函数:
function getTextNodesIn(node, includeWhitespaceNodes) { var textNodes = [], nonWhitespaceMatcher = /\S/; function getTextNodes(node) { if (node.nodeType == 3) { if (includeWhitespaceNodes || nonWhitespaceMatcher.test(node.nodeValue)) { textNodes.push(node); } } else { for (var i = 0, len = node.childNodes.length; i < len; ++i) { getTextNodes(node.childNodes[i]); } } } getTextNodes(node); return textNodes; } getTextNodesIn(el);
该函数递归遍历 DOM 树,根据节点类型识别文本节点。它允许通过传递参数来包含空白节点。
以上是如何使用 jQuery 或纯 JavaScript 选择元素内的文本节点?的详细内容。更多信息请关注PHP中文网其他相关文章!