隐藏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