我正在做一個使用jQuery的打字效果,並發現這個代碼,並編輯它完美的工作,因爲我需要。如何在第一次迭代後停止此電傳動畫?
但是,我有一個問題,我無法停止循環。
我試圖檢測到最後一段被打印出來,所以我可以在沒有運氣的情況下添加一個函數。
您的建議和提示表示讚賞。
的代碼是:
(function ($) {
function typeString($target, str, cursor, delay, cb) {
$target.html(function (_, html) {
return html + str[cursor];
});
if (cursor < str.length - 1) {
setTimeout(function() {
typeString($target, str, cursor + 1, delay, cb);
}, delay);
}
else {
cb();
}
}
function deleteString($target, delay, cb) {
var length;
$target.html(function (_, html) {
length = html.length;
return html.substr(0, length - 1);
});
if (length > 1) {
setTimeout(function() {
deleteString($target, delay, cb);
}, delay);
}
else {
cb();
}
}
// jQuery hook
$.fn.extend({
teletype: function (opts) {
var settings = $.extend({}, $.teletype.defaults, opts);
return $(this).each(function() {
(function loop($tar, idx) {
// type
typeString($tar, settings.text[idx], 0, settings.delay, function() {
// delete
setTimeout(function() {
deleteString($tar, settings.delay, function() {
loop($tar, (idx + 1) % settings.text.length);
});
}, settings.pause);
});
}($(this), 0));
});
}
});
// plugin defaults
$.extend({
teletype: {
defaults: {
delay: 100,
pause: 5000,
text: []
}
}
});
}(jQuery));
$('#target').teletype({
text: [
'Lorem ipsum dolor sit amet, consetetur sadipscing elitr,',
'sed diam nonumy eirmod tempor invidunt ut labore et dolore',
'magna aliquyam erat, sed diam voluptua. At vero eos et'
]
});
$('#cursor').teletype({
text: ['_', ' '],
delay: 0,
pause: 500
});
你可以提醒打印不循環的最後一條消息之後的文字?隨時編輯我的代碼,因爲我是jquery的新手 – Sinan 2013-02-13 19:22:03