2011-04-05 64 views
0

这是我的网页的Html我只是想,如果没有流行的产品,那么整个div popular_prd应该隐藏。jquery找不到工作

<div class="popular_prd"> 
    <h1 class="views-heading">Popular Products</h1> 
    <div class="view view-popular-products view-id-popular_products view-display-id-default boxes-bottom view-dom-id-3"> 
     <div class="views-admin-links views-hide"> 
      <ul class="links"> 
       <li class="0 first"> 
        <a href="/admin/build/views/edit/popular_products?destination=node#views-tab-default">Edit</a> 
       </li> 
       <li class="1"> 
        <a href="/admin/build/views/export/popular_products">Export</a> 
       </li> 
       <li class="2 last"> 
        <a href="/admin/build/views/clone/popular_products">Clone</a> 
       </li> 
      </ul> 
     </div> 
    </div> 
</div> 

我用下面的jQuery代码来隐藏div。

$('document').ready(function(){ 
if(!$('.popular_prd').find('.view-content')) { 
     $('.popular_prd').hide(); 
    } 
    else { 
    $('.popular_prd').show(); 
    } 
}); 

但代码不工作div仍然显示出来。

回答

4

find长度不符合你的想法。它看起来不是

if(!$('.popular_prd').find('.view-content')) { 

你的意思是一样

if(!$('.popular_prd').find('.view-content').length) { 

事实上,你甚至不需要find这里...

if(!$('.popular_prd .view-content').length) { 

底线,jQuery选择不要不会返回真或假,而是一组。测试length以查看是否找到任何东西。

0

您的HTML中没有视图内容类。

+0

这可能是问题的点包含在与popular_prd类股利。 “它不在那里,那我该如何检查它?” – JohnP 2011-04-05 05:57:40

2

或者使用length财产

$('document').ready(function(){ 
if(!$('.popular_prd').find('.view-content').length) { 
     $('.popular_prd').hide(); 
    } 
    else { 
    $('.popular_prd').show(); 
    } 
}); 
+1

'has()'不返回布尔值... – 2011-04-05 05:56:57

+0

@ Box9也许是这样.. – 2011-04-05 05:58:02

5
$('.popular_prd').find('.view-content') 

这将只返回一个jQuery对象,它从不计算错误

您需要检查它

if(!$('.popular_prd').find('.view-content').length) { 
    //no products. 
} 
-1

view-content类不包括在上述HTML

+0

这可能是问题的关键。 “它不在那里,那我该如何检查它?” – JohnP 2011-04-05 05:57:02

+0

其类名的例子。 – 2016-09-21 09:55:51