为innerHTML添加渐入/渐出效果
Adding a fade in/fade out effect to innerHTML
我目前有一个函数,加载JSON文件并更改页面上几个div的内容。这部分没问题,但我想让它看起来性感一点。当单击调用此函数的按钮时,新文本将立即替换旧文本。我想让旧的文本淡出,改变文本,然后在新文本中淡出。
我的代码
function loadNextPassage()
{
//Fading out effect
$("#passage-title").fadeOut();
$("#title").fadeOut();
$("#pre-post").fadeOut();
$("#passage").fadeOut();
$("#media").fadeOut();
//load the new JSON file and change the elements
$.getJSON("passage-2.3.2.JSON", function( data ) {
document.getElementById("passage-title").innerHTML = data["passageNumber"];
document.getElementById("title").innerHTML = data["title"];
document.getElementById("pre-post").innerHTML = data["preReading"];
document.getElementById("pre-reading-content").innerHTML = data["preReading"];
document.getElementById("post-reading-content").innerHTML = data["postReading"];
document.getElementById("passage").innerHTML = data["reading"];
document.getElementById("media").innerHTML = data["media"];
//fading the elements back in
$("#passage-title").fadeIn();
$("#title").fadeIn();
$("#pre-post").fadeIn();
$("#passage").fadeIn();
$("#media").fadeIn();
});
}
当我按下按钮调用这个函数时,我遇到了一个问题,代码改变了元素,然后淡出并返回。我希望我可以淡出文本,然后改变元素,然后最后淡出它回来。谢谢你!
主要问题:
- 不要把纯DOM和jQuery混在一起。使用正确的工具,无论你有什么可用的工具
- 第一个
fadeOut()
,在回调中,更改文本和fadeIn()
。
$(function () {
$("button").click(function () {
$("p").fadeOut(400, function () {
$(this).html("Second One").fadeIn(400);
});
});
});
/* Start Praveen's Reset for Fiddle ;) */
* {font-family: 'Segoe UI'; margin: 0; padding: 0; list-style: none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;}
/* End Praveen's Reset for Fiddle ;) */
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button>Next</button>
<p>First One</p>
jQuery
有一个complete
回调,所以当fadeOut
结束时被调用:
function loadNextPassage() {
var timeout = 400;
//Fading out effect
$("#passage-title").fadeOut(timeout);
$("#title").fadeOut(timeout);
$("#pre-post").fadeOut(timeout);
$("#passage").fadeOut(timeout);
$("#media").fadeOut(timeout, function() {
//load the new JSON file and change the elements
$.getJSON("passage-2.3.2.JSON", function( data ) {
document.getElementById("passage-title").innerHTML = data["passageNumber"];
document.getElementById("title").innerHTML = data["title"];
document.getElementById("pre-post").innerHTML = data["preReading"];
document.getElementById("pre-reading-content").innerHTML = data["preReading"];
document.getElementById("post-reading-content").innerHTML = data["postReading"];
document.getElementById("passage").innerHTML = data["reading"];
document.getElementById("media").innerHTML = data["media"];
//fading the elements back in
$("#passage-title").fadeIn(timeout);
$("#title").fadeIn(timeout);
$("#pre-post").fadeIn(timeout);
$("#passage").fadeIn(timeout);
$("#media").fadeIn(timeout);
});
});
}
说到其他的事情,一个更好的优化将是所有的元素在一个元素(div
,例如),只有fadeOut
和fadeIn
的元素。
另外,如果你想在fadeOut
结束后立即fadeIn
,而不是等待你的JSON
加载,你可以开始加载你的JSON
,同时你的fadeOut
,标记complete
回调和fadeIn
,当两个回调都被调用时,所以当你的按钮淡出你的JSON正在加载,赚取宝贵的400毫秒。
相关文章:
- innerHTML在递增数组中循环时添加重复项
- 添加innerHTML和自动完成未完成的行
- 如何获取链接内容(innerHTML)并将其作为标题添加到其他链接
- 用JavaScript中的+添加到innerHTML意味着什么
- 选中复选框时用 innerHTML 添加的文本,取消选中时不会删除
- 确定元素是否由 JS 添加,还是原始 HTML 文档 *OR* 检测脚本何时通过 InnerHTML 更新节点
- 使用innerHTML想法添加大量html元素的最佳方法是什么
- 如何在运行时将 javascript 警报添加到 innerHTML
- 如何使用 innerHTML 运行添加到页面的脚本
- 在javascript中为innerHTML添加一个复选框
- 使用innerHTML添加php代码
- 为什么我的动画"重放的“;当通过innerHTML添加元素时
- 在IE中使用.innerHTML添加选项元素无效
- 在IE中使用. innerhtml添加选项元素
- innerHTML添加文本,但不添加html标签
- React如何将innerHtml添加到动态创建的子元素中
- 为innerHTML添加渐入/渐出效果
- javascript innerHTML添加而不是替换
- Jquery,将innerHTML添加到DIV并通过该innerHTML的ID访问元素
- 当使用innerHTML添加时,字段变为空