Javascript 隐藏所有包含短语的div

Javascript 隐藏所有包含短语的div,javascript,jquery,html,browser,Javascript,Jquery,Html,Browser,我想隐藏(删除)所有包含特定字符串的。就像一个过滤器。想象一下,它具有浏览器插件的功能 基本上是任何 在div内的标记内,或 直接在div内部(但不是标签) 有没有关于如何最有效地做到这一点的想法?理想情况下,我想要一种让浏览器对此做出良好响应的方法,不仅隐藏div,而且以这样一种方式删除它,使页面没有大的空白 我真的不是非常流利的javascript,所以我想看看我是否可以在这里得到一些提示。(最好使用straight JS或JQuery?) 谢谢 首先,制定一个计划: 查找包含该短语的所有节

我想隐藏(删除)所有包含特定字符串的
。就像一个过滤器。想象一下,它具有浏览器插件的功能

基本上是任何

  • 在div内的标记内,或
  • 直接在div内部(但不是标签)
  • 有没有关于如何最有效地做到这一点的想法?理想情况下,我想要一种让浏览器对此做出良好响应的方法,不仅隐藏div,而且以这样一种方式删除它,使页面没有大的空白

    我真的不是非常流利的javascript,所以我想看看我是否可以在这里得到一些提示。(最好使用straight JS或JQuery?)

    谢谢

    首先,制定一个计划:

  • 查找包含该短语的所有节点
  • 对于找到的每个节点,沿着dom树向上移动,直到找到要删除的第一个封闭div。请参见JQuery
  • 然后拆下相应的div。您可能想要设置移除它们的动画,也可以使用jquery
  • 回复:使用jquery?由你决定。如果您希望您的代码在多个浏览器上工作,那么jquery将有所帮助。您的问题可以使用jquery或不使用jquery来解决

    祝你好运。

    首先,制定一个计划:

  • 查找包含该短语的所有节点
  • 对于找到的每个节点,沿着dom树向上移动,直到找到要删除的第一个封闭div。请参见JQuery
  • 然后拆下相应的div。您可能想要设置移除它们的动画,也可以使用jquery
  • 回复:使用jquery?由你决定。如果您希望您的代码在多个浏览器上工作,那么jquery将有所帮助。您的问题可以使用jquery或不使用jquery来解决


    祝你好运。

    从以下答案拼凑而成:

    这对于jQuery来说相当简单,但您请求的是非jQuery,因此我将快速尝试:

    function removeDivs(withString) {
        var divs = document.getElementsByTagName("DIV");
        for(var i = 0; i < divs.length; i++) {
            div = divs[i];
            if (div.style.display != "none" && div.innerHTML.indexOf(withString) > -1) {
                div.style.display = "none";
            }
        }
    }
    
    函数移除IVS(带字符串){
    var divs=document.getElementsByTagName(“DIV”);
    对于(变量i=0;i-1){
    div.style.display=“无”;
    }
    }
    }
    
    我注意到你说的是“短语在它们里面”,但没有具体说明你想找出短语在里面的程度。在嵌套div的情况下,这将尽可能地隐藏所有在其innerHTML中包含该短语的div。换句话说,由于innerHTML包含所有包含的div,因此任何包含包含短语的div的div也将被隐藏,以此类推

    另一个注意事项是,这根本没有效率,因为它可能最终会冗余地隐藏不需要隐藏的div


    如果我要这么做,我会使用jQuery并尝试获得更高效的东西……这将是重新发明轮子,而不是IMHO(除非有技术限制或浏览器限制阻止jQuery运行)。

    从以下答案中拼凑而成:

    这对于jQuery来说相当简单,但您请求的是非jQuery,因此我将快速尝试:

    function removeDivs(withString) {
        var divs = document.getElementsByTagName("DIV");
        for(var i = 0; i < divs.length; i++) {
            div = divs[i];
            if (div.style.display != "none" && div.innerHTML.indexOf(withString) > -1) {
                div.style.display = "none";
            }
        }
    }
    
    函数移除IVS(带字符串){
    var divs=document.getElementsByTagName(“DIV”);
    对于(变量i=0;i-1){
    div.style.display=“无”;
    }
    }
    }
    
    我注意到你说的是“短语在它们里面”,但没有具体说明你想找出短语在里面的程度。在嵌套div的情况下,这将尽可能地隐藏所有在其innerHTML中包含该短语的div。换句话说,由于innerHTML包含所有包含的div,因此任何包含包含短语的div的div也将被隐藏,以此类推

    另一个注意事项是,这根本没有效率,因为它可能最终会冗余地隐藏不需要隐藏的div

    如果我要这么做,我会使用jQuery并尝试获得更高效的东西……这将是重新发明轮子而不是IMHO(除非有技术限制或浏览器限制阻止jQuery运行)。

    试试我的

    语法

    $(selector).searchengine(textFilter,action,caseSensitive)
    
    对于您的案例,请按以下方式调用它:

    var myTxt="dfvdf...."
    $('div').searchengine(myTxt,'remove',false);
    
    如果您还想删除包含myTxt的所有

       $('div,p').searchengine(myTxt,'remove',false);
    
    如果要隐藏它而不是删除它,请执行以下操作:

    $('div').searchengine(myTxt,'hide',false);
    
    如果您想在此之后显示:

      $('div').searchengine(myTxt,'show',false);
    
    诸如此类

    演示:试试我的

    语法

    $(selector).searchengine(textFilter,action,caseSensitive)
    
    对于您的案例,请按以下方式调用它:

    var myTxt="dfvdf...."
    $('div').searchengine(myTxt,'remove',false);
    
    如果您还想删除包含myTxt的所有

       $('div,p').searchengine(myTxt,'remove',false);
    
    如果要隐藏它而不是删除它,请执行以下操作:

    $('div').searchengine(myTxt,'hide',false);
    
    如果您想在此之后显示:

      $('div').searchengine(myTxt,'show',false);
    
    诸如此类


    演示:如果你不想要jQuery的答案,你可能应该把它从问题标签中删除。事实上,我不确定我是想要还是不想要。我会把这部分作为我要求的一部分。但是谢谢-很好的观点。定义“短语”。这是一个直截了当的句子吗?或者可以将其分解为兄弟/后代元素,如
    这是短语
    ?它在外观上可能看起来像一个短语,但结构根本不能是线性的。啊,是的,好问题。如果短语被分成多个标记,我不确定该如何处理…所以我会说一个标记中只有字符串。如果你不想要jQuery答案,你可能应该将其从问题标记中删除。事实上,我不确定我是否这样做。我会把这部分作为我要求的一部分。但是谢谢-很好的观点。定义“短语”。这是一个直截了当的句子吗?或者可以将其分解为兄弟/后代元素,如
    这是短语
    ?它在外观上可能看起来像一个短语,但结构根本不能是线性的。啊,是的,好问题。我不知道如果这个短语被分成多个标签,人们会怎么处理它…所以我会说只有一个标签中的字符串。你不能只传递任何strin