jquery show隐藏多个div最快的方式

时间:2015-04-03 11:00:20

标签: javascript jquery html css

你好怎么可能
使用show或隐藏多个div
最快的方式
为什么我需要为每个div编号
像这样 :
打开,关闭,show_text
open2,close2,show_text2
我希望每个div重复10次

$(document).ready(function(){
    $(".open").click(function(){
        $(".show_text").show('blind');
		$(".open").hide();
		$(".close").show();
    });
    $(".close").click(function(){
        $(".open").show();
		$(".show_text").hide('blind');
		$(".close").hide();
    });
});		
$(document).ready(function(){
    $(".open2").click(function(){
        $(".show_text2").show('blind');
		$(".open2").hide();
		$(".close2").show();
    });
    $(".close2").click(function(){
        $(".open2").show();
		$(".show_text2").hide('blind');
		$(".close2").hide();
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="open" style="cursor:pointer">Open 1
</div><!-- open -->
<div class="close" style="cursor:pointer; display:none;">Close 1
</div><!-- close -->
<div class="show_text" style="display:none;">
hello world 1
</div><!-- show_text -->

<div class="open2" style="cursor:pointer">Open 2
</div><!-- open -->
<div class="close2" style="cursor:pointer; display:none;">Close 2
</div><!-- close -->
<div class="show_text2" style="display:none;">
hello world 2
</div><!-- show_text -->

3 个答案:

答案 0 :(得分:1)

将内容包装在容器div中,然后您可以使用

  1. .closest()
  2.   

    对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先来获取与选择器匹配的第一个元素。

    1. .find()
    2.   

      获取当前匹配元素集中每个元素的后代,由选择器,jQuery对象或元素过滤。

      HTML

      <div class="container">
          <div class="open" style="cursor:pointer">Open 1
          </div>
          <!-- open -->
          <div class="close" style="cursor:pointer; display:none;">Close 1
          </div>
          <!-- close -->
          <div class="show_text" style="display:none;">
          hello world 1
          </div>
      </div>
      

      代码

      $(".open").click(function() {
          //Traverse up to container div
          var container = $(this).closest('.container'); 
      
          //Use .find() to find child
      });
      

      以下是一个例子:

      $(document).ready(function() {
        $(".open").click(function() {
          var continer = $(this).closest('.container');
          continer.find(".show_text").show('blind');
          continer.find(".open").hide();
          continer.find(".close").show();
        });
        $(".close").click(function() {
          var continer = $(this).closest('.container');
          continer.find(".open").show();
          continer.find(".show_text").hide('blind');
          continer.find(".close").hide();
        });
      });
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      
      <div class="container">
        <div class="open" style="cursor:pointer">Open 1
        </div>
        <!-- open -->
        <div class="close" style="cursor:pointer; display:none;">Close 1
        </div>
        <!-- close -->
        <div class="show_text" style="display:none;">
          hello world 1
        </div>
      </div>
      <!-- show_text -->
      <div class="container">
        <div class="open" style="cursor:pointer">Open 2
        </div>
        <!-- open -->
        <div class="close" style="cursor:pointer; display:none;">Close 2
        </div>
        <!-- close -->
        <div class="show_text" style="display:none;">
          hello world 2
        </div>
      </div>
      <!-- show_text -->

答案 1 :(得分:0)

&#13;
&#13;
$(document).ready(function(){
    $("div[class^=open]").click(function(){
        $("div[class^=show_text]").show('blind');
		$("div[class^=open]").hide();
		$("div[class^=close]").show();
    });
    $("div[class^=close]").click(function(){
        $("div[class^=open]").show();
		$("div[class^=show_text]").hide('blind');
		$("div[class^=close]").hide();
    });
});		
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="open" style="cursor:pointer">Open 1
</div><!-- open -->
<div class="close" style="cursor:pointer; display:none;">Close 1
</div><!-- close -->
<div class="show_text" style="display:none;">
hello world 1
</div><!-- show_text -->

<div class="open2" style="cursor:pointer">Open 2
</div><!-- open -->
<div class="close2" style="cursor:pointer; display:none;">Close 2
</div><!-- close -->
<div class="show_text2" style="display:none;">
hello world 2
</div><!-- show_text -->
&#13;
&#13;
&#13;

答案 2 :(得分:0)

根据您提供的详细信息,如果您还没有想到这一点,我认为完成此任务的最有效方法是使用循环(某种形式)。在我看来,如果你的目标是速度,这将是最有意义的。话虽如此,我认为尝试使用jQuery的show()&amp; hide()只会阻止你。

如果你想&#34;数字&#34;每个元素,并根据特定情况在不同时间显示它们,想想JSON; JavaScript的年龄更大,更有吸引力的兄弟。如果需要,我很乐意为你提供进一步的帮助,否则,欢呼。