jquery - 如何让 animate 在 Accordion 菜单上工作?

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

当我删除 Accordion 的一部分时,我试图让动画正常工作。我希望它能做一些 super 酷的事情,而不是直接消失。在这种情况下如何让 animate 工作?非常感谢。这是我的 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>

最佳答案

你目前的逻辑有一点缺陷......
您调用:

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

然后:

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

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

我建议使用动画回调来删除您的 super 酷东西之后的 Accordion 项目。
像这样的东西:

$('#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/

关于jquery - 如何让 animate 在 Accordion 菜单上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808123/

相关文章:

jquery - 使用 jQuery 连接效果

jquery嵌套 Accordion 问题

jsf - 单个表单中的 primefaces Accordion 面板 - 仅在打开的选项卡上验证

jQuery css 变量不定位容器

php - jquery 和文本区域

单击按钮后 jQuery 不显示/隐藏不同的 ID 搜索元素

jQuery 动画在除 Firefox 之外的所有浏览器中都失败

javascript - 控制jquery动画的速度

protractor by.repeater 和visibilityOf 仅返回集合中的第一项

javascript - jQuery 在 ajax 调用后,具有相同 Id 的事件停止工作