2013-01-07 91 views
-2

嗨我在一個div中有兩個跨度。我想隱藏 div點擊#hidemain,但我需要檢查一個條件:
both span should be hidden
當我運行我的功能時,它隱藏了主分區,當只有一個分區隱藏時。jQuery中的每種方法

<head> 
    <script type="text/javascript"> 
     $(function(){ 
      $('a#firsta').click(function(){ 
       $('#one').hide(); 
      }); 

      $('a#firstb').click(function(){ 
       $('#two').hide(); 
      }); 

      $('a#hidemain').click(function(){ 
       $('.sp').find('span').each(function(){ 
        if($(this).is(':hidden')){ 
         $('.sp').hide(); 
        } 
       }); 
      }); 
     }); 
    </script>  
</head> 
<body> 
    <div class="sp"> 
     Main 
     <span id="one">fist</span> 
     <span id="two">Second</span> 
    </div> 

    <a href="#" id="hidemain">hide main</a><br> 
    <a href="#" id="firsta">hide first</a><br> 
    <a href="#" id="firstb">hide Second</a> 
</body> 
+3

請縮進代碼正確 – Sharlike

+2

你能更新問題,以便它是有道理的? – geedubb

+0

如果我點擊「隱藏主」,想要隱藏div,如果同時顯示這個div下的跨度,則隱藏 – jchand

回答

1

試試這個:

$('a#hidemain').click(function(){ 
    if(!$('.sp').find('span:visible').length) { 
     $('.sp').hide(); 
    }; 
}); 

here

它所做的就是尋找下一個可見的跨度你根元素。如果沒有找到,則隱藏div。

+0

不錯的代碼,簡潔乾淨的感謝 – jchand

1

我想你可能會找這樣的:

$('a#hidemain').click(function() { 
    $('.sp').hide(); 
    $('.sp').find('span').each(function() { 
     if(!$(this).is(':hidden')) { 
       $('.sp').show(); 
     } 
    }); 
}); 
+0

請您詳細說明'if'部分。點擊$('a#hidemain')就完全沒有意義 –

+0

。它應該隱藏$('。sp'),但是如果兩個跨度都應該隱藏。否則它不會隱藏它 – jchand

+1

如果我正確理解你的問題,只有在兩個'span'都隱藏的情況下,你才需要隱藏div'.sp'。在這段代碼中,我首先隱藏div,不管span元素的狀態如何,然後遍歷每個span,如果它們中的任何一個可見,我再次使div可見。所以最終的結果是div只在兩個'span'元素都被隱藏時才被隱藏。 –

1

據我瞭解,你想隱藏<div>,但只有當所有<span>的內部都隱藏起來。正確?

這裏是你如何能做到這一點:

$(function() { 
    $('a#firsta').on('click', function(e) { 
     $('#one').hide(); 
     e.preventDefault(); 
    }); 

    $('a#firstb').on('click', function(e) { 
     $('#two').hide(); 
     e.preventDefault(); 
    }); 

    $('a#hidemain').on('click', function(e) { 
     if ($('div.sp span').filter(':visible').length === 0) { 
      $('div.sp').hide(); 
     } 
     e.preventDefault(); 
    }); 
}); 

工作的jsfiddle:http://jsfiddle.net/NETKf/