2010-11-30 30 views
2

發現了類似的問題,但沒有什麼,涵蓋了我所需要的。我在我的例子中保持簡單,我想使用JQuery。JQuery隱藏類別,如果其他類是可見的或顯示

我有兩個類。如果頁面加載時顯示「類別」div,我想隱藏「過濾器」div。目前沒有任何類型與任何類相關聯。我相信我非常接近,但它不起作用。

<script language="text/javascript"> 
if(!$(this).hasClass("category")){ 
$('filter').css('display', 'none'); 
} 
</script> 

<div class="category">By Category</div> 
<div class="filter">By Custom Filter</div> 

在此先感謝!

+0

這是你確切的代碼? `this`不會引用`.catagory`,除非該代碼位於某種類型的處理程序中。 – Alex 2010-11-30 20:47:24

+0

非常感謝這麼多人,不幸的是我仍然無法正常工作。當我加載頁面時,我不應該能夠看到「通過自定義過濾器」文本..我仍然可以。我必須在這裏錯過一些東西。 – ToddN 2010-11-30 21:07:40

回答

4

使用.length來測試元素是否存在。

使用.hide() & .show()顯示和隱藏元素。

最後,您希望代碼僅在頁面加載完成後運行,因此您想要將它全部包裝在$(document).ready()中。

因此,像這樣可以很好的工作:

<script language="text/javascript"> 
    $(document).ready(function() { 
     //following code will hide all elements with a class of 'filter' 
     //if any elements with a class of 'category' are found 
     if($('.category').length){ 
      $('.filter').hide(); 
     } 
    }); 
</script> 

<div class="category">By Category</div> 
<div class="filter">By Custom Filter</div> 

HTHS,
查爾斯

2

選擇更改爲$('.filter')

2
var $filter = $(".filter"); 
var $category = $(".category"); 

$category.is(":visible") ? $filter.hide() : $filter.show(); 
0

jQuery的

$('div').each(function() { 
    if ($(this).hasClass("category")) { 
     $('.filter').css('display', 'none'); 
    } 
}); 

或者只是:

if ($('.category').length) { 
    $('.filter').css('display', 'none'); 
} 
0
<div class="category">By Category</div> 
<div class="filter">By Custom Filter</div> 

假設通過「顯示在頁面加載」您的意思是渲染,而不是顯示/隱藏的知名度。

$('.category').each(function(){ 
    $('.filter').hide(); 
}); 
相關問題