如何使用Javascript在页面加载时隐藏特定句子

如何使用Javascript在页面加载时隐藏特定句子,javascript,jquery,html,Javascript,Jquery,Html,我需要在下面的内容中隐藏一个特定的句子“明天的领导者,很棒”,而不需要呼叫任何班级或部门 例如: <p>The leader of tomorrow, are great leaders</p> <br> The leader of tomorrow, are great leaders of tomorrow. 明天的领导者,是伟大的领导者 明天的领导者,是明天的伟大领导者。 对此的任何解决方案都将不胜感激。jQuery具有contains方法。以下是

我需要在下面的内容中隐藏一个特定的句子“明天的领导者,很棒”,而不需要呼叫任何班级或部门

例如:

<p>The leader of tomorrow, are great leaders</p>
<br>
The leader of tomorrow, are great leaders of tomorrow.
明天的领导者,是伟大的领导者


明天的领导者,是明天的伟大领导者。

对此的任何解决方案都将不胜感激。

jQuery具有contains方法。以下是给您的一个片段:

<script type="text/javascript">
$(function() {
    var foundin = $('*:contains("The leader of tomorrow, are great")');
});
</script>

$(函数(){
var foundin=$('*:contains(“明天的领导者,是伟大的”);
});
上面的选择器选择包含目标字符串的任何元素。foundin将是一个包含任何匹配元素的jQuery对象。有关API信息,请参见:


使用“*”通配符需要注意的一点是,您将获得所有元素,包括您可能不想要的html主体元素。这就是为什么jQuery和其他地方的大多数示例都使用$('p:contains(“明天的领导者,很棒”))

jQuery有contains方法。以下是给您的一个片段:

<script type="text/javascript">
$(function() {
    var foundin = $('*:contains("The leader of tomorrow, are great")');
});
</script>

$(函数(){
var foundin=$('*:contains(“明天的领导者,是伟大的”);
});
上面的选择器选择包含目标字符串的任何元素。foundin将是一个包含任何匹配元素的jQuery对象。有关API信息,请参见:

使用“*”通配符需要注意的一点是,您将获得所有元素,包括您可能不想要的html主体元素。这就是为什么jQuery和其他地方的大多数示例都使用$('p:contains(“明天的领导者,很棒”))

为什么
jQuery('*:contains(“要隐藏的句子”))
在这种情况下不起作用? 它将匹配包含该句子的所有元素。因此,它将匹配最近的节点,但除此之外,所有父节点都将匹配。因此,如果它是内联的,那么它也将匹配body、html甚至脚本本身,而不是匹配元素,例如在本例中的“P-node”,因为它还包含句子!如果实际包含要隐藏的句子的元素被包装为

<div id="_1">
    <div id="_2">
        <div id="_3">
            <p id="_4">sentence to hide</p>
        </div>
    </div>
</div>
或者,为了有更多的控制权,你可以根据自己的喜好来包装句子和样式

jQuery( document ).ready(function(){
    var sNeedle = 'The leader of tomorrow, are great';
    jQuery('body').html(function(iIndex, sHtml) {
      return sHtml.replace(
        new RegExp(sNeedle, 'g'),
        '<span class="hide-specific-sentence">' + sNeedle + '</span>'
      );
    });
});
注意事项:

  • 我不建议这样对待web内容,但如果出于任何原因不得不这样做,您可以这样做

  • 将选择器缩小到实际包含句子maybe“.content”或其他内容的最接近的父级

  • 让舒尔确保您在进行其他操作之前先进行此操作,因为 附加的事件处理程序可能会丢失(取决于它们的绑定方式)

如果您尝试代码作为代码片段,您将得到一个错误。这很可能是由于一些内部限制(我猜)。但是我在本地尝试了它,它工作起来像一个charme,或者您可以尝试使用它,它也可以工作起来像一个charme…

为什么
jQuery('*:contains(“要隐藏的句子”)
在这个场景中不起作用? 它将匹配包含该句子的所有元素。因此,它将匹配最近的节点,但除此之外,所有父节点都将匹配。因此,如果它是内联的,那么它也将匹配body、html甚至脚本本身,而不是匹配元素,例如在本例中的“P-node”,因为它还包含句子!如果实际包含要隐藏的句子的元素被包装为

<div id="_1">
    <div id="_2">
        <div id="_3">
            <p id="_4">sentence to hide</p>
        </div>
    </div>
</div>
或者,为了有更多的控制权,你可以根据自己的喜好来包装句子和样式

jQuery( document ).ready(function(){
    var sNeedle = 'The leader of tomorrow, are great';
    jQuery('body').html(function(iIndex, sHtml) {
      return sHtml.replace(
        new RegExp(sNeedle, 'g'),
        '<span class="hide-specific-sentence">' + sNeedle + '</span>'
      );
    });
});
注意事项:

  • 我不建议这样对待web内容,但如果出于任何原因不得不这样做,您可以这样做

  • 将选择器缩小到实际包含句子maybe“.content”或其他内容的最接近的父级

  • 让舒尔确保您在进行其他操作之前先进行此操作,因为 附加的事件处理程序可能会丢失(取决于它们的绑定方式)


如果您尝试代码作为代码片段,您将得到一个错误。这很可能是由于一些内部限制(我猜)。但是我在本地试用过,它的效果像一个charme,或者你也可以试试这个,它的效果也像charme…

内容总是在段落元素中吗?@Julius,“领导者”和“明天的领导者”呢?整个段落应该隐藏还是只隐藏特定的部分?@NawedKhan内容并不总是在段落中,有时它是一个独立的内容。@Axel只隐藏特定的句子明天的领袖,你很好,所以我的解决方案肯定对你有用@Julius。。。您应该将选择器“body”的范围缩小到最近的父元素,以及内容是否始终在段落元素中?@Julius“leaders”和“leaders of tomory”呢?整个段落应该隐藏还是只隐藏特定的部分?@NawedKhan内容并不总是在段落中,有时它是一个独立的内容。@Axel只隐藏特定的句子明天的领袖,你很好,所以我的解决方案肯定对你有用@Julius。。。您应该将选择器“body”的范围缩小到最近的父元素。contains()选择器的问题是,它隐藏了包含该句子的所有元素,而不仅仅是特定的句子<代码>$(function(){var foundin=$('*:contains(“明天的领袖,很棒”)).hide();})@Julius这不是
$('*:contains(“要隐藏的句子”))的唯一问题。
。请查看我的答案上的编辑,它完全按照您要求的方式工作!contains()选择器的问题在于它隐藏了包含该句子的所有元素,而不仅仅是特定的句子<代码>$(function(){var foundin=$('*:contains(“明天的领袖,很棒”)).hide();})@Julius这不是
$('*:contains(“要隐藏的句子”))的唯一问题。
。请看我的答案上的编辑,它完全按照你的方式工作