递归遍历所有节点,并删除nodeType属性等于3(Node.TEXT_NODE)的所有子节点. jQuery不能只选择文本节点,所以这可以使用vanilla JavaScript完成.
例:
function removeText(node) {
if (!node || !node.childNodes || !node.childNodes.length) return;
for (var i=node.childNodes.length-1; i>=0; --i) {
var childNode = node.childNodes[i];
if (childNode.nodeType === 3) node.removeChild(childNode);
else if (childNode.nodeType === 1) removeText(childNode);
}
}
或者,打包在jQuery插件中:
$.fn.removeText = function() {
for (var i=this.length-1; i>=0; --i) removeText(this[i]);
return this;
};