javascript - 淡出淡入卡片元素
问题描述
我正在尝试淡出并淡入卡片元素。我的html看起来像这样:
<form class=" mt-4 mw-800 center-block animated fadeInUp">
<div class="row">
<div class="col-lg-12 content">
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">{{ $random_idea->title }}</h3>
</div>
<div class="card-body">
{{ $random_idea->description }}
</div>
</div>
</div>
</div>
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button id="idea" type="button" class="btn btn-raised btn-primary btn-block">
Geef mij een ander idee</button>
</form>
我的jQuery代码如下所示:
$( "#idea" ).click(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('input[name="_token"]').val()
}
});
$.ajax({
type: "POST",
url: "/idea",
success: function(response) {
$(".card").fadeOut();
$('<div class="card card-primary">' +
'<div class="card-header">' +
'<h3 class="card-title">' + response.title + '</h3>' +
'</div>' +
'<div class="card-body">' + response.description +
'</div>' +
'</div>').appendTo('.content').fadeIn();
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});
});
卡片 div 淡出淡入。但有延迟,显示效果不佳。
我的布局如下所示:
当您单击按钮时,卡片淡出,另一张卡片淡入。但它并不流畅。你有什么想法可以帮助我吗?
解决方案
jQueryfadeIn()
和fadeOut()
是异步的。所以,新旧元素一起淡入淡出。但是,这些方法会在动画之后调用回调。因此,您可以success
按如下方式重写您的函数:
$(".card").fadeOut(function() {
$(this).remove();
$('<div class="card card-primary">' +
'<div class="card-header">' +
'<h3 class="card-title">' + response.title + '</h3>' +
'</div>' +
'<div class="card-body">' + response.description + '</div>' +
'</div>').appendTo('.content').fadeIn();
});
推荐阅读
- bash - 如何获取失败的 BashOperator 的退出代码?
- java - 如何连接到 Azure MySQL 数据库
- objective-c - 当我重新运行我的应用程序时,对我的 Assets.xcassets 文件夹所做的更改没有被拾取?
- javascript - 为什么我的带有 JSON 的 Vue for 循环不起作用?
- nestjs - 配置传播到子模块
- blazor - Blazor InputText 在 TextChanged 时调用 async 方法
- node.js - 异步函数不等待 Promise
- azure - 通过 API 调用实现 Web 数据的可视化
- java - 使用父模块作为依赖
- angular - 是否可以在不首先构建库的情况下将 NPM Link 用于角度库?