Jquery:如何将addCLass()after()和slideDown()组合起来

Jquery:如何将addCLass()after()和slideDown()组合起来,jquery,slidedown,jquery-after,Jquery,Slidedown,Jquery After,我正在尝试将一个类添加到现有的div容器中,并在现有的div容器下面插入一个新的div(如果成功) <script> $(document).ready(function(){ $(".entry").click(function(){ $('#content').addClass("col2",1000).after('<div class="box col2">test</div>', function(){ $(this).

我正在尝试将一个类添加到现有的div容器中,并在现有的div容器下面插入一个新的div(如果成功)

<script>
$(document).ready(function(){
  $(".entry").click(function(){
     $('#content').addClass("col2",1000).after('<div class="box col2">test</div>', function(){
        $(this).slideDown();
     });
  });
});
<script>

$(文档).ready(函数(){
$(“.entry”)。单击(函数(){
$('#content').addClass(“col2”,1000).after('test',function()){
$(this.slideDown();
});
});
});
不幸的是,这段代码不能正常工作。slideDown函数不起作用,即使上一个函数尚未完成,新的div也会出现

如果有人能帮我就好了。

after()
不接受回调

相反,您需要为新元素创建一个新的jQuery对象,对其调用
slideDown()
,并将其传递给
after()

例如:

$(...).after(
     $('<div class="box col2">test</div>').slideDown()
);
$(…)。之后(
$('test').slideDown()
);
显然,这只适用于实际工作的
slideDown()
元素。

$(document).ready(function()){
$(document).ready(function(){
  $(".entry").click(function(){
     $('#content').addClass("col2").after('<div class="box col2">test</div>').slideDown();
  });
});
$(“.entry”)。单击(函数(){ $('content').addClass(“col2”).after('test').slideDown(); }); });
这应该能奏效
.addClass()
只接受一个输入,
.after()
不接受回调函数。但是,在上面的示例中,将在调用
.slideDown()
函数之前添加类和html

一些文档链接:

  • addClass()
  • 在()之后
  • 向下滑动()

您的结束标签应该是

此外,您想要的效果可能是:

$(".entry").click(function() {
    $('#content').addClass("col2").after('<div class="box col2">test</div>');
    $('.box:last').hide().show(300);
});
$(“.entry”)。单击(函数(){
$('#content').addClass(“col2”).after('test');
$('.box:last').hide().show(300);
});


编辑:根据您的评论,我想您可能想要:

$(".entry").click(function() {
    $('#content').addClass("col2");
    setTimeout(function() {
        $('#content').after('<div class="box col2">test</div>');
        $('.box:last').hide().show(300);
    }, 500);
});
$(“.entry”)。单击(函数(){
$('#content').addClass(“col2”);
setTimeout(函数(){
$('content')。在('test')之后;
$('.box:last').hide().show(300);
}, 500);
});

不知道after()不接受回调。非常感谢。我更改了代码,但幻灯片仍然不起作用。@PhillyNJ:这应该可以。你有什么问题?@SLaks不适用于
tr
,现在我知道tr不支持这一点,这超出了范围。在你编辑你的答案之前,我不能投票。@PhillyNJ:Edited。看到了吧,但是我在StackOverflow上写的时候错过了,我想这应该是一个comment@Damian为什么不复制/粘贴它?复制/粘贴了它,但不幸的是,这不是我想要的效果。我只是想在id为内容的div将类更改为col2后,显示新div的类框col2。我尝试了您的代码,但仍然无法正常工作。幻灯片下载不顺利,带有类框col2的div出现得很早。您知道如何解决这个问题吗?顺便说一下,addClass会接受2个输入(与jquery UI结合使用)