【问题标题】:How to get animate to work on an accordion menu?如何让动画在手风琴菜单上工作?
【发布时间】:2012-10-09 20:44:13
【问题描述】:

当我删除手风琴的一部分时,我正试图让动画工作。而不是消失,我希望它做一些超级酷的事情。在这种情况下如何让动画工作?谢谢一堆。这是我的 JS:

$('document').ready(function(){
  $('#accordion .red').click(function(){

    $(this).parent('div').prev( 'h3' ).remove();
    $(this).parent('div').remove();
    $(this).parent('div').prev('div').animate("bounceslide");

    return false;
  });
});

这是我的 HTML:

<div id="accordion">

    <h3><a href="#">Section 1</a></h3>
    <div class="squares">
            <a href="#" class="green">1</a>
            <a href="# "class="red">2</a>
            <a href="#" class="blue">3</a>  
            <p>
            Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
            ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
            amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
            odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
            </p>
    </div>

    <h3><a href="#">Section 1</a></h3>
    <div class="squares">
            <a href="#" class="green">1</a>
            <a href="# "class="red">2</a>
            <a href="#" class="blue">3</a>  
            <p>
            Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
            ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
            amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
            odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
            </p>
    </div>
</div>

【问题讨论】:

  • 这是你要找的super duper-ness吗:jsfiddle.net/gaM4C:)
  • 谢谢,但这有点太超级骗子了。当我删除一行时,我只需要它工作。

标签: jquery jquery-animate accordion jquery-ui-accordion


【解决方案1】:

您的逻辑目前存在一些缺陷...
你打电话:

$(this).parent('div').remove();

然后:

$(this).parent('div').prev('div').animate("bounceslide");

因为$(this) 不再存在于 DOM 中(它与它的父级一起被删除了),所以上面的选择器将不起作用。

我建议在你的 super duper cool 东西之后使用动画回调来删除手风琴项。
比如:

$('#accordion .red').click(function(){
  var $toRemove = $(this).parent('div').prev('h3');
      $toRemove = $toRemove.add($(this).parent('div'));

  $toRemove.animate({height:0}, 500, function(){
    // This is the callback.
    $toRemove.remove();
  });

  return false;
});

JSfiddle:http://jsfiddle.net/L9BXS/

【讨论】:

  • +1 将获得 :)
  • 我看到我的逻辑错误,但你的代码似乎没有任何效果。无论如何,非常感谢。我确定我只是犯了另一个愚蠢的错误。 ://
  • @user1179593 - 我制作了一个 JSfiddle 给你看:jsfiddle.net/L9BXS - 所以它应该可以工作 =) 错误控制台中有什么适合你的吗?
  • 是的,这一行出现了一个意外的标识符:var $toRemove = $(this).parent('div').prev('h3');
  • 哈!我得到了它!首先有一些复制和粘贴的怪异之处,而不是全部包含在 $('document').ready(function{}); 中。谢谢一堆。我明明是个牛人。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多