0

我的表单中有一个部分,用户可以在其中添加其他字段。单击“添加字段”时,选项1下方应留一个空格,然后延迟后,新添加的字段淡入。我的字段不淡入,也不滑下,没有延迟。创造了一个空间,就是这样。我究竟做错了什么?

我的表格部分:

<div id="answers" style="display:none;">
    <div class="form-group" id="option1">
        <div class="col-xs-11 col-sm-9 col-md-6">
            <input class="form-control" id="answer" placeholder="Answer Option">
        </div>
        <div class="col-xs-1 col-sm-1 col-md-1" style="line-height:36px;">  <a href="" class="remove">Remove</a>

        </div>
    </div>
    <div>   <a href="" id="add">Add Field</a>

    </div>
</div>

我的 jQuery:

$("#add").on("click", function (event) {
    event.preventDefault();
    var clone = $("#answers div:first").clone()
        .css({
        opacity: 0
    });

    $("#answers div:last").before(clone)
    //(clone).insertBefore("#adding")
    .slideDown('fast')
        .delay(300)
        .animate({
        opacity: 1
    }, {
        queue: false,
        duration: 'fast'
    });
});
4

1 回答 1

1

您的链接是问题:尝试:

$("#answers div:first").clone().css({
         opacity: 0
     }).insertBefore("#answers div:last").slideDown('fast', function () {
         $(this).animate({
             opacity: 1
         });
     });
});

小提琴

当你这样做时$("#answers div:last").before(clone),它会返回你的 div 即添加按钮而不是克隆元素,我认为你正在延迟,以便在你为不透明度设置动画之前完全向下滑动,你可以使用 slideDown 的完整回调语法来实现。

根据您的评论更新:

 $("#add").on("click", function (event) {
     event.preventDefault();
     $("#answers div:first").clone().css({
         opacity: 0,
         display:'none'
     }).insertBefore("#answers div:last").slideDown('slow').animate({
             opacity: 1
         });
 });

小提琴

于 2013-09-18T01:37:30.397 回答