如果div丢失则隐藏另一个div

时间:2014-11-20 11:32:45

标签: javascript jquery

我在Joomla中使用一个模块来获取新闻并动态获取文章。 有一段时间,文章不是很多,它显示空字段,因为它设置为抓住7篇文章。

显示文章时,它包含以下代码:

<div class="ns2-row">

  <div class="ns2-row-inner">

    <div class="ns2-column flt-left col-1">
          CONTENT
    </div>
    <div style="clear:both"></div>
  </div>
  <div style="clear:both"></div>
</div>

如果没有文章,这就是代码:

<div class="ns2-row">

  <div class="ns2-row-inner">

    <div style="clear:both"></div>
  </div>
  <div style="clear:both"></div>
</div>

我在想的是: 如果div.ns2-row-inner中缺少div.ns2-column则隐藏div.ns2-row

知道怎么做吗?

5 个答案:

答案 0 :(得分:2)

试试这个:您可以使用.filter()并检查元素是否有ns2-column以返回TRUE或FALSE。如果为TRUE,请使用closest('div.ns2-row')查找父div,然后将其隐藏。

$('div.ns2-row-inner').filter(function(){
   return $(this).find('div.ns2-column').length==0;
}).closest('div.ns2-row').hide();

<强> DEMO

答案 1 :(得分:0)

$('.ns2-row').each(function()
{
    $(this).toggle($(this).find('.ns2-row-inner').has('.ns2-column'));
});

说明:既然你说了“7篇文章”,我就用each来迭代(我假设有多行)。在每个内部,它将根据this子元素是否包含.ns2-row元素来切换.ns2-row-inner.ns2-column)的可见性。

进一步阅读我使用的内容:

切换:http://api.jquery.com/toggle/

有:http://api.jquery.com/has/

答案 2 :(得分:0)

$('.ns2-row').each(function(){
    if($(this).find('.ns2-row-inner .ns2-column').length === 0){
        $(this).hide();
    }
});

<强>参考:

length

each

答案 3 :(得分:0)

那个脚本应该是这样的,我想

$('.ns2-row').each(function()
{
  $(this).toggle($(this).find('ns2-row-inner .ns2-column').length > 0);
});

答案 4 :(得分:0)

在Shadow的帮助下,我找到了解决方案。我的问题是我有一个jQuery库,我遇到了一些问题。所以,我这样做了:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
<script type="text/javascript">
var jQuery_1_8_3 = $.noConflict(true);
</script>
<script type="text/javascript">
jQuery_1_8_3('div.ns2-row-inner').filter(function(){
   return jQuery_1_8_3(this).find('div.ns2-column').length==0;
}).closest('div.ns2-row').hide();
</script>