隐藏div(它只包含脚本标记)
嗨我想在我的网页上隐藏一些div,它们只包含脚本标签……我该怎么做?
例如..
some js code some js code
基本上这些div是空的,但它们有脚本标签,所以使用空无效。 任何人都可以建议我如何删除这些div。 我的目的是如果任何一个孩子没有任何价值,就删除父标签本身。
如何确定所有孩子对于给定的父母都是空的。 (我想检查空的孩子,即使它有脚本我想忽略它并认为它是空的,最后如果所有的孩子都是空的,我想删除父节点)
例如考虑这个…(可以有任意数量的子节点,如果所有子节点都是空的则删除父节点)(我想忽略脚本标记并认为如果没有其他值那么为空,那么脚本标记)
empty div empty div empty div script empty div script empty div empty div empty div script empty div script
编辑这比听起来更难。 这是@ VisioN观察到脚本元素自己的文本未被忽略后的更新答案。
这应该检查除
元素之外的任何元素是否包含任何文本输出。
$('div').each(function() { var $this = $(this); var $c = $this.contents(); for (var i = 0, n = $c.length; i < n; ++i) { var c = $c.get(i); var tag = c.tagName; if (tag === 'SCRIPT') continue; // ignore script tag if (tag === 'IMG' || tag === 'CANVAS') return; // non-text output if ($.trim($(c).text()).length > 0) { // check text content return; } } $this.hide(); });
见http://jsfiddle.net/alnitak/PdCnL/
你可以使用:has
选择器:
$('div:has(script)').hide();
要么:
$('div > script').parent().hide()
$('div > script').parent().filter(function() { return !$('script', this).siblings().length }).remove()
您可以使用jQuery filter
。 以下代码将确保只隐藏那些仅包含脚本标记的div。
var divs = $("div").filter(function(){ console.log(); return $(this).text().replace(/\s/gi,'') == $('script', this).text().replace(/\s/gi,''); }).hide(); alert(divs.length); // return 3
DEMO
Interesting Posts