在它们之间切换时,jQuery 文本显示在活动文本下方
jQuery text shows below the active one when switching between them
我有这个代码:
.HTML:
<div class="slide-copy col-xs-8">
<div class="art active-art" id="art_1">
<h1>TEXT 1</h1>
<h2>TEXT 1</h2>
<p>A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsumA TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum... </p>
</div>
<div class="art" id="art_2">
<h1>TEXT 2</h1>
<h2>TEXT 2</h2>
<p>A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsumA TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum... </p>
</div>
<div class="art" id="art_3">
<h1>TEXT 3</h1>
<h2>TEXT 3</h2>
<p>A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsumA TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum... </p>
</div>
<div class="art" id="art_4">
<h1>TEXT 4</h1>
<h2>TEXT 4</h2>
<p>A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsumA TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum A TUTAJ OPIS ELO taki bardzo dlugi lorem ipsum... </p>
</div>
</div>
<div class="slide-img col-xs-4">
<h1>Menu</h1>
<ul>
<li>TEXT 1</li>
<li>TEXT 2</li>
<li>TEXT 3</li>
<li>TEXT 4</li>
</ul>
</div>
</div>
JavaScript:
$('li').click(function()
{
var index = $(this).index() + 1;
$('.active-art').fadeOut(500);
$('#art_' + index).fadeIn(500);
$('.active-art').removeClass('active-art');
$('#art_' + index).addClass('active-art');
});
.CSS:
.art
{
display: none;
}
.active-art
{
display: inline;
}
li
{
cursor: pointer;
}
http://jsfiddle.net/5p83c/53/而且我不知道为什么它不起作用。当您第一次单击时,它将按我的预期切换,淡出当前文本,淡入单击一个。但是,如果您尝试第二次切换,它将在交换之前在活动文本下方显示新文本。为什么?
这是因为 fadeOut 会将元素淡入透明(在指定的持续时间内)并隐藏它。并且淡出后的代码执行将继续,即使动画尚未完成。
在您的情况下:最初,你没有任何元素与类active-art
这意味着你并不真正需要这一行(或者更好地说你不是在等待这一行的执行):
$('.active-art').fadeOut(500);
但是,第二次,您有一个具有active-art
类的元素,当您对该元素调用 fadeOut 时,需要 500 毫秒才能将动画完成为透明,并且只有在最后它才会隐藏该元素。另一方面,$('#art_' + index).fadeIn(500);
将在淡出完成元素隐藏之前显示下一个元素(在您的情况下需要 500 毫秒)。
如何解决这个问题?
你可以像这样使用淡出的完整功能:
$('.active-art').fadeOut(500, function () {
// implement the fade in functionality.
});
旁注,active-art
类上的 display
CSS 属性将被覆盖,因为fadeIn
会将不透明度动画化为 1.0,然后将 CSS display
属性添加到 none
,fadeOut
会将不透明度动画化为 0.0,然后将 CSS display
属性添加(或更改)到 block
。
JSFiddle
使用 fadeout()
的 complete
函数。现在,它等待淡出完成,然后执行fadein
因此过渡会更平滑。
$('li').click(function () {
var index = $(this).index() + 1;
var lastIndex = $('.active-art');
$('.active-art').fadeOut(500, function () {
$('#art_' + index).fadeIn(500);
$('.active-art').removeClass('active-art');
$('#art_' + index).addClass('active-art');
});
});
http://jsfiddle.net/5p83c/54/
使用
$('li').click(function()
{
var index = $(this).index() + 1;
$('.active-art').fadeOut(500,function(){
$('.active-art').removeClass('active-art');
$('#art_' + index).fadeIn(500);
$('#art_' + index).addClass('active-art');
});
});
因斯蒂德
这是一个小提琴: http://jsfiddle.net/mqwayr6a/
您不需要 ID 作为参考。只是
$('li').click(function()
{
var index = $('li').index($(this));
$('.art:eq('+index+')').fadeIn(500).addClass('active-art');
$('.active-art').fadeOut(500).removeClass('active-art');
});
应该做这个伎俩。
- 为什么在页面上单击的先前链接的文本显示在 AJAX 请求中
- JavaScript NaN错误,输入文本显示为NaN
- 关于socket.io实时文本显示的问题
- 如何使用javascript使文本显示在文本字段中
- 在它们之间切换时,jQuery 文本显示在活动文本下方
- 使用 ajax 乱码文本显示图像
- 带有文本显示js功能的图像映射 - 某些部分不显示
- 来自 Ajax 请求的文本显示不正确
- 如何使用 JavaScript 使文本显示
- 是否可以将元素内部的文本显示在 ::在 css 之前
- on更改文本框的文本显示在另一个文本框上
- 在文本显示在Scroll上之前在页面上隐藏文本的问题
- 使用带文本显示的Jquery切换文本
- 如何使文本显示速度变慢
- 如何将图片添加到点击计数器文本显示<图像><点击量>
- 文本显示有延迟
- 根据在另一个文本框中输入的文本显示文本框中的文本
- 如何从点击文本显示文件浏览器,并在悬停文本时将鼠标光标更改为指针
- 使文本显示为几行可点击的线条
- 如何使文本显示