【问题标题】:hide parent div if child div is empty of html如果子 div 没有 html,则隐藏父 div
【发布时间】:2013-12-22 00:41:18
【问题描述】:

如果子 div 没有内容,我一直在寻找隐藏父 div 的不同方法,我已经让它在一些小提琴中工作,但在我的实际网站上似乎没有任何工作。

我正在编辑 Wordpress 插件 CPT Bootstrap 轮播,我添加了一个用于显示推荐的新自定义字段,但目前只有一个来自客户的推荐,因此希望在 div 为 emtpy 时隐藏按钮。

这是该页面的链接:http://rookdesigns.co.uk/portfolio/

这是我的 html 和 jQuery:

<div class="test btn btn-primary">Testimonials>>
    <div class="carousel-quotes">
        <?php echo $image[ 'reff']; ?>
    </div>
</div>



jQuery(".carousel-quotes:empty").parent().hide();

我也在用这个jQuery来淡化打开和关闭子div

jQuery(".test").click(function(){
jQuery('.carousel-quotes').fadeToggle();

不确定这是否会产生影响。

非常感谢任何帮助,

提前致谢

一切顺利

哈利

【问题讨论】:

  • 如果div 还是空的...你为什么要隐藏它????
  • @Mayank:隐藏父级(其中包含其他内容)。
  • 嗨,我想隐藏它的原因是它的背景颜色是蓝色

标签: javascript jquery html css wordpress


【解决方案1】:

:empty 不工作,因为有一个文本节点。

您可以更改 PHP 以便在 div 为空时没有空格,或者您可以使用 filter

jQuery(".carousel-quotes").filter(function() {
    return !$.trim($(this).text());
}).parent().hide();

或者实际上,对于您的具体用例,我们可以避免在过滤函数中调用$()text()

jQuery(".carousel-quotes").filter(function() {
    return !$.trim(this.innerHTML);
}).parent().hide();

【讨论】:

  • 谢谢 T.J.克劳德,不幸的是,只是尝试了这个,但没有成功,但很高兴了解 whitesapce,也许我应该尝试摆脱它
  • @HarryRook:上述确实工作:jsbin.com/IpuMAxif/1(仅使用setTimeout让你有机会看到隐藏的内容;here's a version without setTimeout。)也许你'在相关元素存在之前运行代码?将脚本放在 HTML 的底部,就在结束 &lt;/body&gt; 标记之前,或者(如果您不控制脚本的去向),使用 jQuery 的 ready 来安排 DOM 就绪回调。
【解决方案2】:

如果 JavaScript 是您可以接受的解决方案,那么这个 sn-p 应该可以工作:

工作 DEMO

JS

        var ln = $.trim($('.carousel-quotes').text()); /* trim is important here to remove any white space inside the div */
        if (ln.length === 0) 
        {
            $('.test').hide();
        }

编辑

您的页面中存在 JS 错误,这可能是导致问题的原因:

'fadeSpeed'     : 2000,
'targetHeight'  : 100%
'effect'        : 'effect-6'
'direction'     : 'vertical'

上述值中缺少,

'fadeSpeed'     : 2000,
'targetHeight'  : 100%,
'effect'        : 'effect-6',
'direction'     : 'vertical'

修正后检查是否有效!

【讨论】:

  • 不错的一个,但不幸的是它在我的网站上不起作用,我不明白为什么这两个选项在 pastebin 和 fiddle 中都有效,但是当它们被添加到我的网站时,什么都没有。我可能是因为 div 的内容是由 tinymce textarea 创建的,但我不确定这会如何影响事情。感谢您迄今为止的所有帮助
  • 你能提供你网站的网址吗?
  • 嗨 Mayank,我现在已经完全删除了它(因为我没有使用它)。但仍然无济于事,难道是我不能将'$'与wordpress一起使用,因为它会导致冲突,我可以用什么来代替它?当我做 jQuery 时,我只是用 'jQuery' 替换 '$',我可以用 javascript 来做吗?
  • 控制台日志显示$ 没有为该函数定义,这就是它不起作用的原因....请在适当的位置添加您使用的 jquery 库(版本 1.10.2)。对于冲突,请考虑使用 noconflict ...查看此线程 => stackoverflow.com/questions/1391950/…
  • 嗨 Mayank,我认为这不是问题,因为所有其他 jQuery 脚本都可以正常工作,我已将所有 '$' 更改为 'jQuery',并且控制台没有抛出任何问题错误。我现在不知所措,您的 javascript 在小提琴中完美运行,但在我的网站上却没有。所以我刚刚在所有空的 div 中添加了“即将推出的推荐”,现在必须这样做。感谢您和 Crowder 的所有帮助和努力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多