简体   繁体   English

当另一个 div 被按钮激活时使 div 可见

[英]make div visible when another div is activated by a button

I'm trying to make 1 button show two divs when I click it using jquery.当我使用 jquery 单击它时,我试图让 1 个按钮显示两个 div。

So on click of button #show1 I want div #cybernetics + div.gif1 to appear and on click on button #show2 I want div #eat + div.gif2 to appear因此,单击按钮#show1 我希望出现 div #cybernetics + div.gif1 并单击按钮 #show2 我希望出现 div #eat + div.gif2

Is it possible?可能吗? thank you!谢谢你! currently I have the following code目前我有以下代码

 $('document').ready(function() { $('#show1, #show2, #show3').click( function() { var $div = $('#' + $(this).data('href')); $('.demo').not($div).hide(); $div.fadeToggle(); }); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="show1" data-href="cybernetics"><h2> ></h2></button> <button id="show2" data-href="eat"><h2> ></h2></button> <div id="cybernetics" class="demo"> <header> <h1>CYBERNETICS</h1> </header> </div> <div class="gif1"> <img src="cybernetics.gif"> </div> <div id="eat" class="demo"> <header> <h1>EAT</h1> </header> </div> <div class="gif2"> <img src="eat.gif"> </div>

Simply you can show hide as per button click as bewlo.只需按按钮单击显示隐藏,就像 bewlo 一样。

 $('.gif1, .gif2, #cybernetics, #eat').hide(); $('document').ready(function() { $('#show1').click( function() { $('.gif1, .gif2, #cybernetics, #eat').hide(); $('#cybernetics').show(); $('.gif1').show(); }); $('#show2').click( function() { $('.gif1, .gif2, #cybernetics, #eat').hide(); $('#eat').show(); $('.gif2').show(); }); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="show1" data-href="cybernetics"><h2> ></h2></button> <button id="show2" data-href="eat"><h2> ></h2></button> <div id="cybernetics" class="demo"> <header> <h1>CYBERNETICS</h1> </header> </div> <div class="gif1"> <img src="cybernetics.gif"> </div> <div id="eat" class="demo"> <header> <h1>EAT</h1> </header> </div> <div class="gif2"> <img src="eat.gif"> </div>

I assume from the logic you're trying to keep this DRY, so you don't want multiple event handlers.我从你试图保持这个 DRY 的逻辑假设,所以你不想要多个事件处理程序。 As such you can select the target element based on the data-href attribute of the clicked button, then get the next() element from that and fade them both in, something like this:因此,您可以 select 基于单击按钮的data-href属性的目标元素,然后从中获取next()元素并将它们都淡入,如下所示:

 $('document').ready(function() { $('.toggle').click(function() { var $div = $('#' + $(this).data('href')); $('.demo').not($div).hide().next().hide(); $div.add($div.next()).fadeToggle(); }); });
 .demo, .demo + div { display: none; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="show1" class="toggle" data-href="cybernetics"><h2> ></h2></button> <button id="show2" class="toggle" data-href="eat"><h2> ></h2></button> <div id="cybernetics" class="demo"> <header> <h1>CYBERNETICS</h1> </header> </div> <div class="gif1"> <img src="cybernetics.gif"> </div> <div id="eat" class="demo"> <header> <h1>EAT</h1> </header> </div> <div class="gif2"> <img src="eat.gif"> </div>

You can make change to below code您可以更改以下代码

<button id="show1" data-href="cybernetics"><h2> ></h2></button>
<button id="show2" data-href="eat"><h2> ></h2></button>

<div class="allBox cybernetics" style="display: none;">
  <header>
    <h1>CYBERNETICS</h1>
  </header>
</div>

<div class="allBox cybernetics" style="display: none;">
  <img src="cybernetics.gif">
</div>

<div class="allBox eat" style="display: none;">
  <header>
    <h1>E.A.T.</h1>
  </header>
</div>

<div class="allBox eat" style="display: none;">
  <img src="eat.gif">
</div>

and your js code goes here你的js代码在这里

<script type="text/javascript">
$("#show1").on('click', function(){
    hrefVal = $(this).attr('data-href');
    $(".allBox").css('display', 'none');
    $("."+hrefVal).css('display', 'block');
})
$("#show2").on('click', function(){
    hrefVal = $(this).attr('data-href');
    $(".allBox").css('display', 'none');
    $("."+hrefVal).css('display', 'block');
})
</script>

This is a solution maintaining your data structure and name convention.这是一个维护您的数据结构和名称约定的解决方案。 I also fix a bug when clicking multiple times on the same button would fade in and out the right items.我还修复了一个错误,当多次单击同一个按钮会淡入和淡出正确的项目时。

 $('document').ready(function() { $('#show1, #show2, #show3').click( function() { var target = $(this).data('href'); var $div = $('#' + target); $('.demo').not($div).hide(); $(".gif img:not([src^='"+target+"'])").hide(); $(".gif img[src^='"+target+"']").show(); $div.fadeIn(); }); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="show1" data-href="cybernetics"><h2> ></h2></button> <button id="show2" data-href="eat"><h2> ></h2></button> <div id="cybernetics" class="demo"> <header> <h1>CYBERNETICS</h1> </header> </div> <div class="gif"> <img src="cybernetics.gif"> </div> <div id="eat" class="demo"> <header> <h1>EAT</h1> </header> </div> <div class="gif"> <img src="eat.gif"> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM