我想隐藏(删除)所有<div>
包含某个字符串的内容。就像一个过滤器。认为它具有浏览器插件的功能。
基本上任何东西
- 在 div 内的标签内,或
- 立即在 div 内(但不是标签)
关于如何最有效地做到这一点的任何想法?理想情况下,我想要一种让浏览器对此做出良好响应的方法,不仅隐藏 div,而且以页面没有大空白的方式将其删除。
我真的不是很流利地使用javascript,所以我想看看我是否可以在这里得到一些指示。(最好直接使用 JS 或 JQuery?)
谢谢!
我想隐藏(删除)所有<div>
包含某个字符串的内容。就像一个过滤器。认为它具有浏览器插件的功能。
基本上任何东西
关于如何最有效地做到这一点的任何想法?理想情况下,我想要一种让浏览器对此做出良好响应的方法,不仅隐藏 div,而且以页面没有大空白的方式将其删除。
我真的不是很流利地使用javascript,所以我想看看我是否可以在这里得到一些指示。(最好直接使用 JS 或 JQuery?)
谢谢!
首先,制定一个计划:
回复:使用jquery?由你决定。如果您希望您的代码在多个浏览器上工作,那么 jquery 会有所帮助。您的问题可以使用或不使用 jquery 来解决。
祝你好运。
从这个答案一起破解:Get all visible DIVs on a page with javascript?
这对于 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";
}
}
}
我会注意到你说“里面有短语”,但没有指定你想找出短语在里面的级别。在嵌套 div 的情况下,这将尽可能隐藏所有在其 innerHTML 中包含该短语的 div。换句话说,由于 innerHTML 包含所有包含的 div,任何包含其中包含短语的 div 的 div 也将被隐藏,依此类推。
另请注意,这根本不是有效的,因为它可能最终会多余地隐藏不需要隐藏的 div。
如果我要这样做,我会使用 jQuery 并尝试获得更高效的东西......这将是重新发明轮子而不是恕我直言(除非存在阻止 jQuery 运行的技术限制或浏览器限制)。
句法
$(selector).searchengine(textFilter,action,caseSensitive)
对于您的情况,请按以下方式调用它:
var myTxt="dfvdf...."
$('div').searchengine(myTxt,'remove',false);
如果您还想删除所有<p>
包含的内容myTxt
:
$('div,p').searchengine(myTxt,'remove',false);
如果你想隐藏它而不是删除它:
$('div').searchengine(myTxt,'hide',false);
如果你想在那之后展示它:
$('div').searchengine(myTxt,'show',false);
等等