Javascript 如果缺少一个div,则隐藏另一个div
我在Joomla中使用一个模块来获取新闻,并动态地获取文章。 有时,文章并不多,它会显示空字段,因为它设置为抓取7篇文章 显示文章时,它包含以下代码: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
<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>