延迟和显示文本问题
JQuery - delay and show text issue
下面我得到了一些代码,这应该延迟2秒,隐藏以前的跨度和显示下一个跨度,但我似乎不能让它工作。
<style>
span{ display:none}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"><script>
<div id="text"></div>
<script>
var text = [
"<span>Sent A blabla</span>",
"<span>sent B</span><span>sent b bbb cont....</span>",
"<span>Sent c...</span><span>Sent C2</span><span>sent c3</span>", ];
var text = text[Math.floor(Math.random() * text.length)];
jQuery('#text').html(text);
jQuery('#text').show();
jQuery('#text span:first').show();
var delay = 2000;
jQuery("#text span").each(function() {
setTimeout( function(){
var el = $(this);
el.prev().hide();
el.show();
}, delay)
delay += 2000;
});
</script>
由于您使用关键字this
而出现问题。
在for语句中,您需要设置一个变量,该变量设置为$(this),然后在超时时引用该变量。在下面的例子:
var parent = $(this);
setTimeout( function(){
var el = parent;
el.prev().hide();
el.show();
}, delay)
delay += 2000;
JS Fiddle: http://jsfiddle.net/Lykwmfz8/
都在代码注释中:
jQuery(function( $ ){ // FingerSaver: Use $ in the jQuery scope // It's also a DOM ready!
var delay = 2000; // You know this one :)
var $text = $("#text"); // Cache your parent element
// Elements Array.
// You have multiple SPANS per array key
// (which is odd but OK... here's the array)
var text = [
"<span>Sent A blabla</span>",
"<span>sent B</span><span>sent b bbb cont....</span>",
"<span>Sent c...</span><span>Sent C2</span><span>sent c3</span>",
];
// Append all SPANs to the #text parent:
$text.html( text.join("") );
// All SPANs are now inside #text but are hidden by CSS!
// Get (cache) all appended SPANs
var $spans = $text.find("span");
// OK, how many SPANs we have?
var tot = $spans.length;
// (You had 3 array keys, but) 6 SPAN elements :)
// Start c Counter with a random number
var c = Math.floor(Math.random() * tot);
// Create a function that will loop the texts
(function loop() {
c += 1; // Increment counter
c %= tot; // Reset counter back to 0 on reminder
$spans.fadeOut(500).eq( c ).stop().fadeIn(500);
setTimeout(loop, delay);
}()); // Start!
});
#text span{
position:absolute;
display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="text"></div>
如果您希望保留多个SPAN元素的集合并显示为GROUPS,那么您所需要做的就是将来自数组键的每个SPAN包装到父包装器中,这与上面的操作相同,只是,不是操作SPAN,而是操作它们的父包装器。由于你在问题中没有很好地解释这一点,到目前为止,我只能给你以上的信息了。
相关文章:
- 复选框与文本内联-JS问题
- 使用Handontable在同一列中用纯文本和html对问题进行排序
- 轴助手上的标签与文本几何和旋转问题
- 高图表的文本溢出问题
- 有CSS问题:can't将文本放置在选择框的右侧
- Safari手机文本输入问题
- 从 tinymce 文本区域检索数据时出现问题
- 文本框导致结构 JS 中的字体出现问题
- 使用jquery问题将文本附加到文本区域
- 显示比容器宽的文本,滚动时出现问题
- Type=文本模式问题
- Safari存在文本输入问题,用户输入时会选择文本,导致文本丢失
- IE9中的文本对齐问题
- 文本框聚焦事件并在IE9中输入问题
- 使用最接近查找文本输入的JQuery问题
- HTML:密码字段中的HTML5占位符属性问题 - 显示正常文本
- JavaScript WebSocket 字符编码问题(文本)
- Coffeescription出现奇怪问题-文本参数发送为null
- d3中的作用域问题.文本功能
- IE9上传问题:文本阻止上传按钮工作