【问题标题】:jQuery - slide will open but doesn't closejQuery - 幻灯片将打开但不会关闭
【发布时间】:2013-11-12 15:08:46
【问题描述】:

我有一个 jQuery 代码,当用户点击 <h2> 标题时,它会打开一个 div 并在里面显示其内容。

HTML代码:

<div class="content1">
    <h2 class="vertical"> open text box</h2>
</div>
<div class="content1-text" >
        Text box
   <div id="back1" style="float:right;">HOME</div>
</div>

CSS代码:

.content1-text {
   padding: 20px;
   width: 920px;
   min-height: 560px;
   height: auto;
   background: #61752d;
   margin: 0;
   position: absolute;
   display: none;
}

jQuery 代码:

$('.content1').click(function () {
    if($('.content1').is(':visible')){
            $('.content1-text').toggle('slide', {
                direction: 'left'
            }, 1000);
    }
    else{
        $('#back1').toggle('slide', {
            direction: 'left'
        }, 1000, function(){ $('#content1-text').fadeIn();});
    }
});

现在的问题是,当用户点击 open text box 时,它会打开该框,但是当用户点击 HOME 时,它不会像刚开始……

我试图让它从左到右滑动......当它从右到左关闭时。

我试图在网上找到它,但没有任何运气。

我的 JsFiddle here

【问题讨论】:

  • 我不认为你知道你在告诉它做什么......
  • 我知道当我点击类名 content1 的东西时,它会打开类名 content1-text 的东西(在我的情况下是我的 div)。一张幻灯片,持续时间为 1 秒.. 但结束是我挣扎的地方

标签: jquery html css


【解决方案1】:

我觉得你真的需要复习一下toogle方法http://api.jquery.com/toggle/

你可以这样做:

$('.content1').click(function () {
    $('.content1-text').toggle("slow");
});
$('#back1').click(function () {
    $('.content1-text').toggle("slow");
});

查看演示http://jsfiddle.net/PBm88/11/

编辑

在获得预期结果的更多细节后,您可以基于classname 执行一个功能,为相关容器启用幻灯片动画:

$('.vertical').click(function () {
  var id=$(this).parent().attr('class'),
      slid='.'+id+'-text';
  $(slid).show().animate({
      width:'920px',
      opacity: '1'
  },2000)
});
$('.back').click(function () {
    $(this).parent().animate({
      width:'0px',
      opacity: '0'
    }, 
    {duration:2000,
     complete: function() {
         $( this ).hide();
        }
     });
});

新演示http://jsfiddle.net/PBm88/59/

【讨论】:

  • 这就是在我使用nextparent的所有div中保留类contentback的方式。你可以添加一个带有多个容器的小提琴吗?
  • 是的,就是这样!我只将持续时间从 2000 更改为 1000。谢谢!
【解决方案2】:

您没有主页按钮的点击处理程序

试试

$('.content1').click(function () {
        $('.content1-text').toggle('slide', {
            direction: 'left'
        }, 1000);
});

$('#back1').click(function(){
        $('.content1-text').toggle('slide', {
            direction: 'left'
        }, 1000);
})

演示:Fiddle

【讨论】:

  • 我认为 OP 希望内容也能淡入/淡出
  • @Zeaklous 这看起来更像它。但是我尝试了一种可以将它用于另外 5 个内容的方式。像.content1.content2 等等……
【解决方案3】:

http://jsfiddle.net/PBm88/13/

改用这个 jQuery:

$(document).ready(function() {
        $('#button, #back1').click(function() {
            $('#box').toggleClass('visible');
        });
    });

CSS:

.visible { display: block; }

还用三个ID修改了HTML。

在 CSS 中做任何动画。随意修改。

【讨论】:

  • 这不符合 OP 的预期。
  • 这确实不是我需要的。当用户点击主页时,它仍然没有关闭。 (所有右边的div)
  • 抱歉,我没有看到 jsfiddle 中的主页按钮部分,它在右侧被切断了。我做了相应的修改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-20
  • 2020-08-03
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多