Javascript 我可以在特定DIV之后删除并替换所有内容吗

Javascript 我可以在特定DIV之后删除并替换所有内容吗,javascript,jquery,replace,Javascript,Jquery,Replace,有没有办法用javascript/jquery删除特定div之后的所有内容并替换为新代码 DIV是动态生成的,我希望能够在之后删除所有内容 最后一个div看起来像: <div class="galImage"> **div content** </div> /**delete everything after this point and replace with code below**/ </div

有没有办法用javascript/jquery删除特定div之后的所有内容并替换为新代码

DIV是动态生成的,我希望能够在之后删除所有内容 最后一个div看起来像:

            <div class="galImage"> **div content** </div>
            /**delete everything after this point and replace with code below**/
        </div>
    </body>
</html>
我尝试了$'.galImage'.nextAll.remove;我在stackoverflow上的其他地方找到了它,但它似乎没有任何效果-nextAll是不是一个合法的函数?

nextAll需要一个选择器。例如:

$('#afterme').nextAll('*').remove();
查看此处的小提琴:

下一个安装需要一个选择器。例如:

$('#afterme').nextAll('*').remove();
请看这里的小提琴:

看起来不错吧


看起来正常吗?

使用remove,将从主体中删除元素,因此它不会显示,尽管它仍然存在于DOM中

因为它都是动态的,所以可以通过以下两种方式之一使用load:加载每个div的内容,或者加载div的所有html

$'container'。加载'path/to/data'


在div上使用load时,它将替换已经存在的数据。

使用remove将从主体中删除元素,因此它将不会显示,尽管它仍然存在于DOM中

因为它都是动态的,所以可以通过以下两种方式之一使用load:加载每个div的内容,或者加载div的所有html

$'container'。加载'path/to/data'


当您在div上使用load时,它将替换已经存在的数据。

您的问题有点不清楚,因为您已经发布了似乎是标记片段的内容

据我所知,您想要删除一个textNode。选择器和大多数jQuery遍历方法找不到文本节点,但可以使用本机API进行选择

var galimg = $('.galImage')[0];  // <-- get the DOM element

    // traverse to its parent, and remove the node that is after the galImage
galimg.parentNode.removeChild( galimg.nextSibling );
考虑到您正在使用jQuery,如果确实存在要删除的实际元素而不仅仅是文本节点,则应该使用.remove,否则jQuery的缓存将不会更新,这可能会导致内存泄漏

var galimg = $('.galImage')[0];
var node;

while( node = galimg.nextSibling ) {
    $(node).remove();
}
或者,如果您想要完整的jQuery解决方案,可以这样做:

var galimg = $('.galImage');
var nodes = galimg.parent().contents(); // <-- .contents() includes text nodes
var idx = nodes.index( galimg );   // <-- get the index of galImage

nodes.slice( idx + 1 ).remove();  // <-- take a slice of the nodes, starting at
                                  //       the index after the galImage

您的问题有点不清楚,因为您已经发布了看起来像是标记片段的内容

据我所知,您想要删除一个textNode。选择器和大多数jQuery遍历方法找不到文本节点,但可以使用本机API进行选择

var galimg = $('.galImage')[0];  // <-- get the DOM element

    // traverse to its parent, and remove the node that is after the galImage
galimg.parentNode.removeChild( galimg.nextSibling );
考虑到您正在使用jQuery,如果确实存在要删除的实际元素而不仅仅是文本节点,则应该使用.remove,否则jQuery的缓存将不会更新,这可能会导致内存泄漏

var galimg = $('.galImage')[0];
var node;

while( node = galimg.nextSibling ) {
    $(node).remove();
}
或者,如果您想要完整的jQuery解决方案,可以这样做:

var galimg = $('.galImage');
var nodes = galimg.parent().contents(); // <-- .contents() includes text nodes
var idx = nodes.index( galimg );   // <-- get the index of galImage

nodes.slice( idx + 1 ).remove();  // <-- take a slice of the nodes, starting at
                                  //       the index after the galImage

仅供参考:您应该将这些节点视为包含整个元素(包括开始、结束和所有子元素)的节点。因此,如果删除嵌套节点,则不会影响其祖先的结束标记。仅供参考:应将这些节点视为包含整个元素(包括开始、结束和所有子体)的节点。因此,如果删除嵌套节点,它不会影响其祖先的结束标记。此外:如果只想删除以下所有div标记,则需要使用.nextAll'div'。上面的代码删除div,period之后的所有内容。根据jquery文档,选择器是可选的。下一个安装不需要选择器。你的提琴更新:很好的一个,它工作得很好,这是一个很好的技巧,但它可能不需要选择器,但它似乎不想删除一个基本的文本字符串。我试图删除的代码没有可识别的标记,因此需要在我上次删除后全面删除所有内容。此外:如果您只想删除以下所有div标记,则需要使用.nextAll'div'。上面的代码删除div,period之后的所有内容。根据jquery文档,选择器是可选的。下一个安装不需要选择器。你的提琴更新:很好的一个,它工作得很好,这是一个很好的技巧,但它可能不需要选择器,但它似乎不想删除一个基本的文本字符串。我试图删除的代码没有可识别的标记,因此需要在我上次删除代码之后全面删除所有内容。它可以删除任何容器外的基本文本字符串吗?您需要查看文本节点,看起来不错。它可以删除任何容器之外的基本文本字符串吗?您需要查看文本节点。我很想使用remove,但元素只是一个没有目标的文本字符串…如果没有目标,那么您应该做两件事中的一件…1,使用“*”选择器删除另一篇文章中提到的所有内容,或者2,添加一个目标。使用load或ajax时,可以将html加载到一个div中,包括其他div。因此,您可以加载我的文本,而不是加载标准字符串My text。有了它,您可以使用类选择器$'.dyntext'.removeNice轻松删除div,但问题是它有一个不需要的base64字符串被注入到我的DOM中,但奇怪的是,只有在Apple上,而不是在windows上。请参见其他浏览器的屏幕截图

r回答,它似乎创造了自己非常奇怪的div…在你发布的图片中,什么是不需要的?base64的所有东西?它看起来像id为page1的元素及其同级。这是正确的吗?是的,这是正确的。在windows上的Safari中,一切都很好,但在苹果mac上,它就像是加载了请求的图片,然后继续加载其他每一张图片作为base64,杀死了我的应用程序。我可以给你一个应用程序的链接吗?我很想使用remove,但是元素只是一个文本字符串,没有目标…如果没有目标,那么你应该做两件事中的一件…1、使用“*”选择器并删除其他帖子中提到的所有内容,或2、添加目标。使用load或ajax时,可以将html加载到一个div中,包括其他div。因此,您可以加载我的文本,而不是加载标准字符串My text。有了它,您可以使用类选择器$'.dyntext.removeNice轻松删除div-但问题是它有一个不需要的base64字符串被注入到我的DOM中,但奇怪的是只有在苹果上,而不是在windows上。从另一个答案的屏幕截图上看,它似乎创建了自己的外观非常奇怪的div…。在您发布的图片中,什么都是多余的?base64的所有东西?它看起来像id为page1的元素及其同级。这是正确的吗?是的,这是正确的。在windows上的Safari中,一切都很好,但在苹果mac上,它就像是加载了请求的图片,然后继续加载其他每一张图片作为base64,杀死了我的应用程序。我可以给你一个应用程序的链接吗?非常感谢!对不起,我只想把重点放在这个问题上。你的权利,这是一个文本节点的base64我想删除,我只是不知道这是什么叫它。这个和下一个解决方案都非常有效。但是对于我的应用程序,虽然你的节点循环移除似乎有一些有趣的结果,但你可能会在这个屏幕截图上看到,这个问题有点复杂,我不确定这是一条路要走。干杯@丹斯克:你是说循环导致了混乱的文本?如果是这样,那就奇怪了。它所做的只是删除目标的下一个兄弟,只要有一个。这将删除它遇到的任何类型的节点,如果您需要删除文本节点,这很方便,因为nextAll将无法提供帮助。不,不是全部,很抱歉,您的代码很酷,完全按照我的要求执行。我的意思是,你可以在截图上看到我试图解决的问题。我在您的节点循环和:$'.galImage*'.remove;$'方面取得了部分成功 此处替换文本

”。在“galImage”之后插入;但不幸的是,我无法让它坚持下去。与我的galImage一起导入的base64代码破坏了一切。@danssker:你有没有可能有一个指向该页面的公共链接给你带来麻烦?@danssker:你可以继续删除评论。我有链接。gallery页面加载速度很慢,但我会在今天的某个时候看看我能找到什么。非常感谢!对不起,我只想把重点放在这个问题上。你的权利,这是一个文本节点的base64我想删除,我只是不知道这是什么叫它。这个和下一个解决方案都非常有效。但是对于我的应用程序,虽然你的节点循环移除似乎有一些有趣的结果,但你可能会在这个屏幕截图上看到,这个问题有点复杂,我不确定这是一条路要走。干杯@丹斯克:你是说循环导致了混乱的文本?如果是这样,那就奇怪了。它所做的只是删除目标的下一个兄弟,只要有一个。这将删除它遇到的任何类型的节点,如果您需要删除文本节点,这很方便,因为nextAll将无法提供帮助。不,不是全部,很抱歉,您的代码很酷,完全按照我的要求执行。我的意思是,你可以在截图上看到我试图解决的问题。我在您的节点循环和:$'.galImage*'.remove;$'方面取得了部分成功 此处替换文本

”。在“galImage”之后插入;但不幸的是,我无法让它坚持下去。与我的galImage一起导入的base64代码破坏了一切。@danssker:你有没有可能有一个指向该页面的公共链接给你带来麻烦?@danssker:你可以继续删除评论。我有链接。gallery页面加载速度很慢,但我会在今天的某个时候看看我能找到什么。