当使用after()时,slidedown函数不起作用

时间:2014-03-13 06:23:03

标签: jquery ajax

我尝试过很多方法来使用我在互联网上找到的示例来滑动使用after()创建的新元素,但它不起作用。

我没有成功地尝试了这些可能性 使用以下代码,元素快速显示,没有滑动效果

$this.after("<p id='comment' style='display:none'>" + data + "</p>");
$("#comment").slideDown(2000);

使用以下代码,不会显示该元素

$(this).after("<div id='comment' style='display:none'>" + data + "</p>", function(){
                            $("#comment").slideDown().css('display', 'inline');
                        });

使用以下代码,不会显示该元素

$(this).after("<div id='comment' >" + data + "</p>", function(){
                            $("#comment").slideDown(2000);
                        });

也许,我应该澄清代码是在ajax中

$(document).ready(function() {
        $(function() {
            $("#button<?php echo $data['id']; ?>").click(function(e) {
                var $this = $(this);
                $.ajax({
                    type: "POST",
                    url: "<?php echo Yii::app()->createUrl('comment/create'); ?>",
                    success: function(data) {

                       $this.after("<p id='comment' style='display:none'>" + data + "</p>");
                       $("#comment").slideDown(2000);
}
                });
            });

        });
    });

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

试试这个:创建一个自定义函数来触发slideDown,在你的ajax调用成功中调用它。

 $(document).ready(function() {
        $(function() {
        function mySlideFn(){
           $("#comment").slideDown(2000);
        }
            $("#button<?php echo $data['id']; ?>").click(function(e) {
                var $this = $(this);
                $.ajax({
                    type: "POST",
                    url: "<?php echo Yii::app()->createUrl('comment/create'); ?>",
                    success: function(data) {

                       $this.after("<p id='comment' style='display:none'>" + data + "</p>");
                       mySlideFn();
            }
                });
            });

        });
    });

答案 1 :(得分:0)

以下代码似乎工作正常:

$(this).after('<p class="comment" style="display: none;">A comment</p>');
$('.comment').slideDown(2000);

也许在您的第一个示例中,您没有正确引用$(this)。见jsFiddle