Javascript 如果缺少一个div,则隐藏另一个div

Javascript 如果缺少一个div,则隐藏另一个div,javascript,jquery,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="clea

我在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-internal中缺少div.ns2-column,则隐藏div.ns2-row


你知道怎么做吗?

试试这个:你可以使用
.filter()
检查元素是否有
ns2列来返回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();

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

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

切换:

有:

参考资料:


我想剧本应该是这样的

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

在影子的帮助下,我找到了解决办法。我的问题是我还有一个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>

var jQuery_1_8_3=$.noConflict(true);
jQuery_1_8_3('div.ns2-row-internal')。过滤器(函数(){
返回jQuery_1_8_3(this).find('div.ns2-column')。length==0;
}).closest('div.ns2-row').hide();

您的第一行(在选择器中)缺少一些
字符。这将起作用,但(要学究化),用户要求在
.ns2 row-internal
的上下文中检查
.ns2-column
元素。如果它在其他任何地方,则可能没有问题。我假设
.ns2 row-internal
只是一个包装器。如果div.ns2-row-internal中缺少div.ns2-column,则即使存在一个content div
,它也会存在我明白你的意思。我们的假设是不同的。OP需要再发布一行来确认我们的假设他没有。我什么都没有假设。你假设他在说div.ns2-row-internal的
时不是故意的,我假设我需要检查div.ns2-row-internal的
>正如他所说。你能为jQuery 1.4.3修改它吗?因为当我添加它时,它在这个模块上工作,但它影响到另一个抓取jQuery 1.4.3的模块。修改jQuery库是个坏主意。检查其他模块是否引用了其他版本的jQuery并使用相同的。我不是有意修改库。但是你编写的代码没有o 1.4.3的改革。然而,我做到了。没有冲突策略。我在这里补充了这一点作为答案。
$('.ns2-row').each(function()
{
  $(this).toggle($(this).find('ns2-row-inner .ns2-column').length > 0);
});
<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>