更改.slideToggle()上的图像并阻止打开div关闭本身

问题描述 投票:0回答:1

目前,我已经创建了一个slideToggle()脚本专注于三个单独的div。 div 2在开始时打开,三个按钮可以分别切换每个div。您可以在下面进一步查看我的代码以了解我的意思。

现在,我试图找出一些我似乎无法完成的事情。

1)当div打开时,我试图将按钮图像更改为橙色(其他)图像按钮。当div处于活动状态时,有什么方法可以使图像不同吗?

2)首次加载脚本时,第二个div处于活动状态。然而,当您单击第二个按钮时,它会一起关闭所有div。有没有办法确保当按钮的相关div已经打开时,确保它保持打开状态。这意味着如果我单击已经激活的div的按钮就不会发生任何事情,但如果我单击其他按钮之一,它会关闭另一个活动div并切换另一个。

我希望我能正确解释。我看到这里有更多的人遇到了类似的问题,所以也许一些更专业的程序员可以帮助我们。先感谢您。

这是我的代码:

https://jsfiddle.net/7xanx1tc/

jQuery(document).ready(function($) {

  //Start of Jquery


  $('.button1').click(function() {
    $('.developers').slideUp();
    $('.lockedin').slideUp();
    $('.product').slideToggle('slow');
  });

  $('.button2').click(function() {
    $('.product').slideUp();
    $('.developers').slideUp();
    $('.lockedin').slideToggle('slow');
  });

  $('.button3').click(function() {
    $('.product').slideUp();
    $('.lockedin').slideUp();
    $('.developers').slideToggle('slow');
  });


  // End of Jquery
});
.product {
  display: none;
}

.developers {
  display: none;
}
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>

<h3>

  <img src="http://www.mindaffect.nl/wp-content/uploads/2017/12/product-holder.png" class="button1" alt="Expand" /> </h3>
<h3>
  <img src="http://www.mindaffect.nl/wp-content/uploads/2017/12/lockedin-holder.png" class="button2" alt="Expand" /> </h3>
<h3>
  <img src="http://www.mindaffect.nl/wp-content/uploads/2017/12/developers-holder.png" class="button3" alt="Expand" /> </h3>

<div class="product">
  Testdiv1
</div>

<div class="lockedin">
  Testdiv2
</div>

<div class="developers">
  Testdiv3
</div>
javascript jquery slidetoggle
1个回答
0
投票

为了发挥更改状态的后果,您应该使用切换功能的回调。我们以第二个按钮为例:

问题1:如果要在单击第一个按钮后显示其他按钮,请执行以下操作:

$('.button2').click(function(){
    $('.product').slideUp();
    $('.developers').slideUp();
    $('.lockedin').slideToggle('slow', function () {
        $('.button2').hide();
        $('.orange-button').show();
    });   
});
// Remember .orange-button should work similar to .button2

问题2:要检查按钮的状态以避免“双切换”效果,您可以执行如下检查:

$('.button2').click(function(){
    if ($('.lockedin').css('display') === 'none') {
        $('.lockedin').slideToggle('slow');
    }
    $('.product').slideUp();
    $('.developers').slideUp();   
});

希望这个答案很有帮助;)

© www.soinside.com 2019 - 2024. All rights reserved.