我有一段代码,允许从这样的子节点删除文本:Jquery的:不()选择不工作
$.fn.removeText = function() {
for (var i=this.length-1; i>=0; --i) removeText(this[i]);
};
function removeText(node) {
if (!node) 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);
}
}
$('body').removeText();
所以我现在要排除的元素,比如像跨度这个:
$('body:not(span)').removeText();
它不工作,一切都被删除。我尝试了几个没有运气的其他(Jquery)的东西。我必须更改removeText()
功能吗?我真的想坚持Jquery ..是否有其他的东西我可以尝试?
究竟是你想与选择过滤掉什么? *没有*'body'是'span',所以它*不能匹配写入的任何内容。 – 2013-03-20 09:38:52
@大卫托马斯我不明白......请你详细说明一下吗? – Youss 2013-03-20 09:40:24
您的选择器正如所写,选择'body'标记,然后使用提供给':not()'选择器的字符串从选择中移除元素。因为'body'不是'span',所以没有元素会被删除。阅读[':not()'docs](http://api.jquery.com/not-selector/)。 – 2013-03-20 09:42:56