gpt4 book ai didi

jQuery 删除 s 但不使用 .html() 重新创建所有内容

转载 作者:行者123 更新时间:2023-12-01 01:25:41 25 4
gpt4 key购买 nike

我在 CKEditor 中有很多元素,其中的事件连接到它们,并使用 .data() 方法将数据绑定(bind)到它们。我想从该 HTML block 中删除所有  。我可以简单地做

$('body').html($('body').html().replace(/&nbsp\;/, ''));

但是因为这会重置 HTML,所以它会有效地重新创建所有元素,这意味着我必须重新绑定(bind)所有事件和数据。我目前正在做的是这样的:

if ($body.html().indexOf(' ') > -1) {
$body.find(':*:not(:has(*))').each(function(){
// These nodes don't have any children so contain text or nothing
$(this).html($(this).html().replace(/&nbsp\;/,''));
});
}

这将替换 HTML 中的  s,如下所示:

     <p>Foo&nbsp;Bar</p>

但在 HTML 中则不然:

     <div>Foo&nbsp;<span>Bar</span></div>

有人能想出更好的方法吗?

谢谢

最佳答案

只需选择目标元素内的所有文本节点,然后循环遍历它们即可进行替换。

$("*").contents().filter(function(){
return this.nodeType === 3;
}).each(function(){
// do your replace here using this.nodeValue
});

我强烈建议如果可能的话,过滤到较小的元素子集,'*''body *' 可能会很慢。

关于jQuery 删除 s 但不使用 .html() 重新创建所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14528638/

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