gpt4 book ai didi

javascript - jQuery :not() selector not working

转载 作者:行者123 更新时间:2023-11-28 13:44:21 24 4
gpt4 key购买 nike

我有一段代码允许从子节点中删除文本,如下所示:

$.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..还有其他我可以尝试的吗?

Example JsFiddle

最佳答案

您需要在 body:not() 选择器之间添加空格

$("body :not(span)")

如果没有空格,你实际上说的是给我主体,这不是一个 span 元素 - 它总是 true 并且只返回 body 元素。

有了空格,你说,给我所有不是 span 元素的 body 元素的子元素。

更新:

我相信您看到的问题是 jQuery 不选择文本节点(至少据我所知)。这个SO answer建议一种选择后代文本节点的方法。

在您的 fiddle 中,唯一可选择的主体后代元素是跨度,您可以使用 :not(span) 选择器从该元素中选择退出。

关于javascript - jQuery :not() selector not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15519825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com