-2

嗨,我在一个 div 中有两个跨度。我想.sp在点击时隐藏这个 div,#hidemain但我需要检查一个条件:
both span should be hidden
目前,当我运行我的函数时,它会在只隐藏一个跨度时隐藏主 div 。

    <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>
4

3 回答 3

1

我想你可能正在寻找这个:

 $('a#hidemain').click(function() {
     $('.sp').hide();
     $('.sp').find('span').each(function() {
         if(!$(this).is(':hidden')) {
              $('.sp').show();
         }
     });
 });
于 2013-01-07T15:08:36.573 回答
1

尝试这个:

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

这里

它的作用是在你的根元素下寻找一个可见的跨度。如果没有找到,则隐藏 div。

于 2013-01-07T15:15:32.710 回答
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/

于 2013-01-07T15:16:43.180 回答