javascript - 隐藏 div(仅包含 script 标签)

标签 javascript jquery

您好,我想隐藏网页上的一些 div,它们只包含脚本标签...我该怎么做?

例如..

<div>
   <div>
       <div>
        <script type="text/javascript">some js code</script>
       </div>
    <script type="text/javascript">some js code</script>
   </div> 
</div>

基本上这些 div 是空的,但它们里面有脚本标签,所以使用空是行不通的。任何人都可以建议我如何删除这些 div。我的目标是如果任何子标签都没有值(value),则删除父标签本身。

我如何确定给定父级的所有子级都是空的。 (我想检查是否有空子节点,即使它有脚本,我也想忽略它并将其视为空,最后如果所有子节点都是空的,我想删除父节点)

例如,考虑这个...(可以有任意数量的子级,如果全部为空,则删除父级)(我想忽略脚本标签,如果脚本标签之外没有任何值,则将其视为空)

 <div class="printpage">
<div class="flip">
    <div>empty div</div>
    <div>
        <div>
        <div>empty div</div>
            <div>
            <div>empty div</div>
                <div>
                    <script>script</script>
                    <div>empty div</div>
                </div>
            <script>script</script>
            </div>
        </div>
    </div>
</div>
<div class="flip">
    <div>empty div</div>
    <div>
        <div>
        <div>empty div</div>
            <div>
            <div>empty div</div>
                <div>
                    <script>script</script>
                    <div>empty div</div>
                </div>
            <script>script</script>
            </div>
        </div>
    </div>
</div>

最佳答案

编辑这比听起来更难。这是根据 @VisioN 观察到脚本元素自己的文本没有被忽略后的更新答案。

这应该检查除了 <script> 之外是否还有任何元素元素包含任何文本输出。

$('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/

关于javascript - 隐藏 div(仅包含 script 标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12582331/

相关文章:

javascript - 如何在 React 中使用 Material UI 定义背景图像来填充屏幕并删除左侧和右侧的边缘?

c# - 将 JavaScript 数组传递给 IEnumerable 会给出空值

javascript - jQuery Promise 重构的用例

javascript - 当另一个 div 位于现有 div 之间时,如何使 div 重新排列?

javascript - 有两个全宽 HTML 元素重叠但都可以交互

javascript - 如何用JS手动弹出所需的文本字段警报?

javascript - 打印页面调整

Javascript 填充选择框

javascript - 使用 onclick 将内容替换为另一个内容

javascript - 通过单选删除和添加 div