首页 文章

在jquery中查找当前可见的div

提问于
浏览
4

我有四个div全部设置 display:none 并在document.ready我显示第一个div ..我有4个链接按钮link1,link2 ... link4 ...我在link1上显示div1点击等等..如何查找哪个div目前在jquery中可见?

<style type="text/css">
        .ContentDivs
        {
            width: 90%;
            height: 300px;
            border: solid 5px #404040;
            display:none;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div>
            <a id="Link1" href="#">Link1</a> 
            <a id="Link2" href="#">Link2</a>
             <a id="Link3" href="#">Link3</a> 
             <a id="Link4" href="#">Link4</a>
        </div>
        <div id="div1" class="ContentDivs">
        DIv1
        </div>
        <div id="div2" class="ContentDivs">
        Div2
        </div>
        <div id="div3" class="ContentDivs">
        Div3
        </div>
        <div id="div4" class="ContentDivs">
        Div4
        </div>
    </div>
    <script type="text/javascript">
        $(document).ready(function() {
              $("#div1").show().fadeIn("slow");
        });
        $('#Link1').click(function() {
        $(".ContentDivs").fadeOut("fast");//find current div here?
            $("#div1").show().fadeIn("slow");
        });
        $('#Link2').click(function() {
        $(".ContentDivs").fadeOut("fast");//find current div here?
            $("#div2").show().fadeIn("slow");
        });
        $('#Link3').click(function() {
        $(".ContentDivs").fadeOut("fast");//find current div here?
            $("#div3").show().fadeIn("slow");
        });
        $('#Link4').click(function() {
        $(".ContentDivs").fadeOut("fast");//find current div here?
            $("#div4").show().fadeIn("slow");
        });
    </script>

在这里看到效果http://jsbin.com/umode4/edit

5 回答

  • 1

    Use

    $(".ContentDivs:visible");
    
  • 3

    用较小的代码,你可以这样做...

    jQuery

    <script type="text/javascript">
        $(document).ready(function() {
              $("#div1").show().fadeIn("slow");
        });
        $('.links a').click(function() {
            $(".ContentDivs:visible").fadeOut("fast");//find current div here?
            $("#div" + ($(this).index()+1)).show().fadeIn("slow");
        });
    </script>
    

    html

    <div>
        <div class="links">
            <a id="Link1" href="#">Link1</a> 
            <a id="Link2" href="#">Link2</a>
            <a id="Link3" href="#">Link3</a> 
            <a id="Link4" href="#">Link4</a>
        </div>
        <div id="div1" class="ContentDivs">
            DIv1
        </div>
        <div id="div2" class="ContentDivs">
            Div2
        </div>
        <div id="div3" class="ContentDivs">
            Div3
        </div>
        <div id="div4" class="ContentDivs">
            Div4
        </div>
    </div>
    

    演示

  • 5

    您可以使用:visible过滤器选择器 .

    $('.ContentDivs:visible').........
    

    Update:

    一种更简单的方法是为每个链接提供一个 rel 属性,其值与div和一个类的id相同,例如:

    <a rel="Link1" class="link" href="#">Link1</a> 
    <a rel="Link2" class="link" href="#">Link1</a>
    

    和div:

    <div id="Link1">
      Div1
    </div>
    
    <div id="Link2">
      Div2
    </div>
    

    然后你需要的是获得点击链接的rel并显示/隐藏相应的div:

    $('a.link').click(function(){
      var rel = $(this).attr('rel');
    
      if ($('div#' + rel).is(':visible'))
      {
        $('div#' + rel).fadeOut('fast');
      }
      else
      {
        $('div#' + rel).fadeIn('fast');
      }
    
      return false;
    });
    
  • 0

    尝试

    var displayedDiv = $('div.ContentDivs').filter(':visible');
    

    甚至这个

    var displayedDiv = $('div.ContentDivs').filter(function(){
           if($(this).css('display') != 'none')
              return true;
           else
              return false;
           });
    
  • 1

    这应该工作:

    HTML

    <div>
        <div id="links">
            <a id="Link1" href="#" rel="div1">Link1</a> 
            <a id="Link2" href="#" rel="div2">Link2</a>
             <a id="Link3" href="#" rel="div3">Link3</a> 
             <a id="Link4" href="#" rel="div4">Link4</a>
        </div>
    
        <div id="div1" class="ContentDivs">
        DIv1
        </div>
        <div id="div2" class="ContentDivs">
        Div2
        </div>
        <div id="div3" class="ContentDivs">
        Div3
        </div>
        <div id="div4" class="ContentDivs">
        Div4
        </div>
    </div>
    

    使用Javascript

    $(function () {
        $("#links a").click( function () {
            $(".ContentDivs").css( "display", "none");
            $("#"+this.rel+".ContentDivs").fadeIn();
        });
    
    });
    

相关问题