我正在使用jQuery 1.4开发一个网站。我无法更新它(真的很糟糕)。
我已关注@benekastah回复from this question,以逐字逐句显示文字。它最后使用promise()
方法,我无法使用,因为promise()
是从1.6版开始。
这是完整的代码
var $el = $(".example:first"), text = $.trim($el.text()),
words = text.split(" "), html = "";
for (var i = 0; i < words.length; i++) {
html += "<span>" + words[i] + ((i+1) === words.length ? "" : " ") + "</span>";
};
$el.html(html).children().hide().each(function(i){
$(this).delay(i*200).fadeIn(700);
});
$el.find("span").promise().done(function(){
$el.text(function(i, text){
return $.trim(text);
});
});
其余代码工作正常。
我的问题是,还有其他选择吗?我已经搜索了'promise()`之前使用的方法,但找不到它们,我发现它只是plugin但我想的更简单。
无需说我是一个JS noobie ^^。任何帮助非常感谢。
答案 0 :(得分:2)
基本上,您可以使用简单的setTimeout
在vanilla JS中对此进行编码 - 即使它有点难看,您也在处理jQuery 1.4,因此您没有多少选择
setTimeout(function(){
$el.text(function(i, text){
return $.trim(text);
});
}, $el.children().length * 200 + 500);
这是一个演示:http://jsfiddle.net/jdfmS/(我在演示中添加了一个红色类,因此您可以看到它的执行位置)
另一个选项(事实证明你确实有选择!)是使用.queue()
- 这是在jQuery v1.2中添加的
$el.find("span").last().queue(function(){
$el.text(function(i, text){
return $.trim(text);
});
$(this).dequeue();
});
以下是.queue()
:http://jsfiddle.net/jdfmS/1/